• ベストアンサー

Linuxのディレクトリへのファイル展開

Linuxのディレクトリへのファイル展開 クロスコンパイルなどで、debパッケージのツリー構造のままコピーしたいんです。 例えば、展開したdebパッケージの~/temp/usr/bin/xxxを~/arm/rom/usr/bin/xxxに コピーする。あるいは、ディレクトリが無ければ、ディレクトリごとコピーする なんてことが必要になりますが、これを自動処理することはできないでしょうか? あるいは、自動処理のMakefileを自動で作るとか

質問者が選んだベストアンサー

  • ベストアンサー
  • seednyan
  • ベストアンサー率28% (448/1568)
回答No.1

tarコマンドを使用すれば、、、 上記を例に。。。。(CentOSでのコマンドになります。) cd /temp/usr tar cvfp bintr.tar bin mv bintr.tar /arm/rom/usr tar xvfp bintr.tar これで、コピーできるはずです。 なお、上記のtarコマンドのオプションだと、ファイルの属性もそのまま、変更なしに移ります。 ご参考になればと思います。 *tarコマンドの詳細は検索してご確認ください。

anubis37
質問者

お礼

tarはこう言う機能があたんですね。 ありがとうございました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

・cp の -r オプション ・(cd ~/temp/usr/bin;tar cvf - . ) | tar xvf - -C ~/arm/rom/usr/bin tarの入出力をパイプで継げたもの ・(インストールされているなら) rsync

関連するQ&A

  • ディレクトリの移動 cd 

    初め、/usr/localにapache-ant-*-bin.tar.gz (/home/usrname/ダウンロード/下にある)を展開しようとして次のコマンドを実行しました。 /usr/local$ tar -xzvf /home/usrname/ダウンロード/apache-ant-*-bin.tar.gz すると cp: ディレクトリ `./apache-ant-1.7.0' を作成できません: Permission denied と出て、できませんでした。次にディレクトリを移動して ~/ダウンロード$ tar -xzvf apache-ant-*-.bin.tar.gz を行い、またディレクトリを移動して /usr/local$ cp -r /home/usrname/ダウンロード/apache-ant-* . のコマンドを実行するとまた cp: ディレクトリ `./apache-ant-1.7.0' を作成できません: Permission denied と表示されて移動させることができません。。 なんででしょうか?お願いします。

  • URLからディレクトリ構造をテキストとして取り出す方法

    URLからディレクトリ構造をテキストとして取り出す方法 たとえば http://www.xxx.com/xxx/yyy/zzz/ といったパスから、 自動的に http://www.xxx.com ├─xxx │ ├─yyy │ │ ├─zzz のようなツリーテキストを自動的に生成する方法や ツールはありませんか。 意味不明でしたら加筆しますのでよろしくお願いします。

  • Makefileの書き方

    正しいかどうかわかりませんが、インターネットである程度検索してから以下のようなJavaのコンパイル用Makefileを作成しました。なお、全てのクラスのパッケージは package abc.def.ghi; です。 ---Makefile--- .SUFFIXES: .java .class JC = /usr/bin/javac PATH = ./abc/def/ghi/ CLASSPATH = -classpath /Users/macintosh/ TARGET1 = Prog1 TARGET2 = Prog2 TARGET3 = Prog3 list: $(PATH)$(TARGET1).class \ $(PATH)$(TARGET2).class \ $(PATH)$(TARGET3).class .java.class: $(JC) $(CLASSPATH) $< clean: /bin/rm -f $(PATH)*.class これで/Users/macintoshディレクトリからmakeを実行すると、 /usr/bin/javac -classpath /Users/macintosh/ abc/def/ghi/Prog1.java /usr/bin/javac -classpath /Users/macintosh/ abc/def/ghi/Prog2.java /usr/bin/javac -classpath /Users/macintosh/ abc/def/ghi/Prog3.java が実行され、無事にクラスファイルが3つ生成されます。-classpathによりクラスパスも同時に設定されるので、あとはどこのディレクトリからでも $java abc.def.ghi.Prog1 でプログラムが実行されると思ったのですが/Users/macintosh/以外のディレクトリから実行すると Exception in thread "main" java.lang.NoClassDefFoundError: というエラーになります。何がおかしいのでしょうか。あと、Java用のMakefileで改善したところがあれば教えて下さい。

    • ベストアンサー
    • Java
  • スタティックライブラリの使い方

    Linuxで使えるCのライブラリを落としてきたのですが、使ったことがないので戸惑っています。 パッケージは、makefile , .c , .h の3つで、makeするのはできました。で、ライブラリ.a が出力されまして、このファイルを使え!と説明書にはあるのですが、この先がよくわかりません。 とりあえず、出力されたライブラリを/usr/lib あたりに入れて、自作のプログラムで先ほどのライブラリのヘッダをインクロードするところまではできたのですが・・・。 コンパイルすると、/usr/bin/ld: cannot find -ライブラリ と出てしまいます。教えていただけますでしょうか。

  • linuxへfujitsuコンパイラのインストール方法

     linux(redhat7.3)のPCに対して、fujitsuの『Fortran & C Package Family Version 5』というコンパイラをインストールしたのですが、いざfrtでコンパイルしても、a.outを使うことができません。  ./a.out: error while loading shared libraries: libfj9i6.so.1:cannot open shared object file:Nosuch file or directory と出てしまいます。  インストールは説明書通りに行い、デフォルトの/usr以下に保存しました。また、/FFC/binの中のfrtはリンクを作って/usr/binの中に入れてあります。  上記の方法では何か足りないのでしょうか。初心者ですので簡単な質問をしてしまっているのかもしれませんが、どうかよろしくお願いいたします。

  • apacheのディレクトリ

    Linux RedHat9をインストールする際に、パッケージでWebサーバーを選択していれた場合、apacheの本体はどのディレクトリ内にインストールされるのでしょうか? Webサーバを選択した場合、PHPもインストールされますが、今回デフォルトでインストールされるPHPは使用できないので、PHPを入れなおしたいのですが、コンフィグレーションする際に、以下のようにapacheのディレクトリを指定したいのですが、どこにあるのか分かりません。 よろしくお願いします。 --with-apxs2=/usr/local/apache2/bin/apxs \

  • sudoでシェルスクリプトを実行させたい

    /usr/bin/sudo を使って、xxx.shを実行させたいので、設定でxxx.shを許可しました。 その後Apacheで動くCGI(perlスクリプト)から、``を使って実行させようと考えています。 このときにこのxxx.shがうまく動きません。多分シェルにアクセスできないのだと思いますが、どうしたらこのスクリプトをroot権限で動かす事ができるようになるのでしょうか。関係あるかどうかわかりませんが、xxx.shの中身はディレクトリ作成コマンドなどです。ネットで検索したら、シェルスクリプトだけ許可にすればよいとあったのですが・・。セキュリティ的には/bin/shを許可するのはまずそうな気がするのですが、こちらを許可してもよいものでしょうか。 環境等 xxx.sh 755 所有者(user1) Apache実行ユーザ (apache) CGIの実行ユーザ(apache?) 挑戦したコマンド(とアパッチのログ) `/usr/bin/sudo sh ./xxx.sh`; ->パスワード求められます (/bin/shの権限がない?) `/usr/bin/sudo ./xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) `/usr/bin/sudo フルパス/xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) 不足の点などあればご指摘ください。

  • 【ZIP】unixサーバーでディレクトリを保ちZIP圧縮する場合

    サーバー上でディレクトリ構造を保ったままZIP処理を行なう方法について勉強しています。 下記のような2つのファイルがサーバー上にあるとき /usr/home/xxx/html/base/dir1/file1.txt /usr/home/xxx/html/base/dir2/file2.txt 以下の処理をかけると、 zip -r /usr/home/xxx/html/data.zip /usr/home/xxx/html/base data.zip 内に「usr」を先頭にしたディレクトリ構造が生成されます。 しかしこれでは意味のない多重入れ子となり具合がよくありません。 何とか「usr」ではなく「base」が先頭になるよう指定はできないものでしょうか? 具体的にはdata.zip内に、以下が生成されてほしいわけです。 base/dir1/file1.txt base/dir2/file2.txt 方法をご存じの方、よろしくお願いいたします。 <環境> レンタルサーバー FreeBSD 6.2 操作はPHP5経由

  • apt-getのdebファイルをダウンロードしたい

    会社での勉強目的で、VMwarePlayer2.5.5上でUbuntu8.0.4を動かしています。 Subversionをインストールしたくてapache2とsubversionのパッケージを apt-get installでインストールしたいんですが、 Ubuntu環境はネットワークに繋がないというルールになっているので、 パッケージを自動ダウンロードできないでいます。 欲しいパッケージのdebファイルをUbuntu内にコピーすれば良いというところまでは分かったのですが、 どこにdebファイルがあるのか教えていただきたいと思います。 よろしくお願いします。

  • バッチファイルでカレントディレクトリ変更の成功失敗が知りたい

    バッチファイルをCドライブ上で起動します。 バッチ処理の過程で、カレントディレクトリをDドライブ上の所定のフォルダへ変更したいのですが、 バッチを起動する端末により、DドライブやDドライブがあってもその先のフォルダが存在しない場合があります。 その様な場合は、Dドライブへの移動をやめ、別処理を行いたいのですが、ディレクトリ移動の成功失敗を感知し、結果によって処理を自動で分けるよい方法はないでしょうか? ▼行う処理 d: cd temp (ここで、d:\tempへ移動して欲しいのですが、dが無かったり、tempが無かったりします) 10:  (移動成功のとき) (移動成功のときの処理) 20:  (移動失敗のとき) (終了)

専門家に質問してみよう