tarを使用したサーバー間のファイル移動について

このQ&Aのポイント
  • サーバー移転を予定しています。コマンド「tar」を利用してホームページファイル群を移動させたいのですが、思い通りに行きません。
  • ファイルが複数あるため、移動元(サーバーA)の/web/ディレクトリごとアーカイブして、移動先(サーバーB)のhttpdocs内で展開しましたが、webディレクトリが展開されてしまいます。
  • tarコマンドに詳しくないため、他に良い方法があるかもしれません。個別にtarするのが困難なため、良い方法がありましたら教えてください。
回答を見る
  • ベストアンサー

tarを使用したサーバー間のファイル移動について

サーバー移転を予定しています。 コマンド「tar」を利用してホームページファイル群を移動させたいのですが、思い通りに行きません。 【移転イメージ】 移動元(サーバーA) /web/ ┗ index.html ┗ a.html ┗ dirA ┗ 他多数 ↓↓↓↓ 移動先(サーバーB) /httpdocs/ ┗ index.html ┗ a.html ┗ dirA ┗ 他多数 ファイルが複数あるため、移動元(サーバーA)の/web/ディレクトリごとアーカイブして、移動先(サーバーB)のhttpdocs内で展開しましたが、以下のような構成になってしまいました。 アーカイブ tar -cvf webdata.tar web/ サーバーBのhttpdocs内で展開 /httpdocs/ ┗ /web/ ┗ index.html ┗ a.html ┗ dirA ┗ 他多数 ※ ディレクトリ「httpdocs」の中に、「web」ディレクトリが展開されてします。 webディレクトリごとtarするのがいけませんか?ファイルが多いため、個別にtarするのが困難です。 コマンドに詳しくないため、他に良い方法があるかもしれませんが、詳しくわかりません。良い方法がありましたら、教えて下さい。 どうぞ、宜しくお願い致します。

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

  • ベストアンサー
  • THX1138
  • ベストアンサー率51% (108/208)
回答No.1

現状からだととりあえずこんなところで。 hostB$ cd httpdocs hostB$ mv web/* . hostB$ rmdir web 固めなおす場合は…… hostA$ cd web hostA$ tar cvf ../webdata.tar . てな感じでどうでしょう。

wdwdwd
質問者

お礼

2パターンの対処法について、大変よくわかりました。 さきほど、試したところ思い通りの動作ができました。有難うございました。

関連するQ&A

  • サーバー間のファイルの移動(コピー)について

    質問させてください。 ウェブサーバーAとBがあるとします。 サーバー間でファイルを移動(コピー)するプログラムにC.phpがあるとします。 C.phpでウェブサーバーAにあるD.txtをウェブサーバーBの指定したディレクトリに移動(コピー)をするようにしたいのですがどのように記述すればいいのかわかりません。アドバイスお願い致します。 ※移動とコピーはどちらでもかまいません。

    • ベストアンサー
    • PHP
  • サイズの大きいファイルのtarでの展開不具合

    お世話になります。 サーバーA上のあるディレクトリ以下のファイルを"tar jcf"でtar.bz2の形でファイルをバックアップし、サーバーBでそのファイルを”tar xvjf”で展開するという運用をしています(cronで毎日実行しています)。 運用当初は問題なく展開できていたのですが、最近展開が途中で止まっているようです。展開できていた時と現在ではtar.bz2のファイルのサイズくらいしか違いが思い当たりません。 現在、tar.bz2のファイルが16GBを超えているのですがtarにファイルサイズの制限などがあるのでしょうか?

  • 絶対パスでアーカイブされたファイルをtarコマンドの相対パスで展開

    UNIXコマンドの「tarコマンド」についての質問です。 ファイルを絶対パスを用いてアーカイブをかけた場合、アーカイブファイルの展開時に、絶対パスで展開させず相対パスで展開させる方法がわかりません。 test.logを絶対パスを用いてアーカイブします。 %pwd /export/home %ls test.log %tar -cvf test.tar /export/home/test.log %ls test.log test.tar %rm test.log %ls test.tar このアーカイブファイルを別ディレクトリに移動 %mv /export/home/test.tar /export/home/test/test.tar 自身もディレクトリ移動 %cd /export/home/test %ls test.tar このような条件でアーカイブファイルの展開を実行 %tar -xvf test.tar %ls test.tar /export/home/testのディレクトリでは展開されず下記のように 絶対パスで指定したディレクトリに展開されます。 %cd /export/home/test %ls test.log インターネットで調べたところ %tar -xvf test.tar -C /export/home/test で実行すれば相対パスで展開できると記述があったのですが うまくできませんでした。 上記のコマンドで実行したところ得にはエラーは出ず メッセージが「tar:ブロックサイズ=4」と出て展開もされませんでした。 もしよろしければご教示願えませんでしょうか。 よろしくお願いいたします。

  • tarの中のtarを閲覧するには。。

    A.tarというtarファイルの中にB.tarというファイルが格納されています。 A.tarを全く展開せずにB.tarの内容を閲覧する方法はありませんでしょうか?

  • Linux上でtarコマンドでデータをバックアップする為

    Fedora core 6を使っています、データのバックアップを取ろうと思い、ディレクトリー毎をtarコマンドでバックアップしようと思います。ディレクトリー内が30Gbyteもありますが、tarコマンドで正常に保存・展開ができるでしょうか?tarでアーカイブした時の最大ファイルサイズの制限ってあるのでしょうか?tarを実行するときの注意点などお教えください。

  • tarでディレクトリのみをアーカイブしたい

    【質問】 Solaris8 純正のtarコマンドで、ファイルを除いてディレクトリのみをアーカイブする良い方法を模索しています。 【背景】 ディレクトリ構成をtarで抽出し、別のマシンで解凍する(/export/homeなど)際に、配下のファイルサイズが大きく時間がかかるため、抽出の際にファイルを除外しておきたい 【前提】 tarでアーカイブする際、ディレクトリを指定すると配下のファイルも再帰的にアーカイブされてしまう。 【詳細】 例えば、以下のようなディレクトリ構造のとき、 AAA/ AAA/aaa/ AAA/aaa/hoge.c BBB/ BBB/foo.txt ディレクトリのみをtarアーカイブして、 AAA/ AAA/aaa/ BBB/ という内容のtarアーカイブを作成するとき、私は以下のようなやり方をしています。 A.全抽出→解凍→ファイル消し→再抽出 # tar cf - AAA BBB | (cd /tmp/work; tar xvf -) # cd /tmp/work # find . -type f -exec rm {} \; # tar cvf /dev/rmt/0 AAA BBB B.除外リスト作成→除外リスト指定で抽出 # find AAA BBB -type f > exclude-list # tar cvfX /dev/rmt/0 exclude-list AAA BBB どちらも結果的にはディレクトリのみ抽出できるので問題はないのですが、ちょっと手間がかかります。コマンドライン1行でできる良い方法があれば教えて下さい。 # そもそも【前提】が私の思い込みかもしれないので、 # 「違うよ」という指摘があればお願いします。

  • tar圧縮ファイルが作成できず困っています。

    tarとgzipをパイプでつなげて使用すると、tar圧縮ファイルが正常に 作成できず困っています。(Solaris) *やりたいこと* ファイル一覧test.txtに記載されているファイルを一度に tar圧縮したい。(tar・gzip別々でなく) *コマンドライン* # tar cvfp - -I test.txt | gzip -c > test.tar.gz a aaa.txt 1K a bbb.txt 1K a ccc.txt 1K # ls -l test.tar.gz(←とりあえずファイルは作られている) -rw-r--r-- 1 root other 33235 5月 12日 10:03 test.tar.gz # gunzip test.tar.gz(←unzipもできる) gunzip: /usr/bin/gzip has 2 other links -- unchanged # ls -l test.tar -rw-r--r-- 1 root other 64076 5月 12日 10:03 test.tar # file test.tar(←この時点でおかしい。file種別がアーカイブじゃない) test.tar: ELF 32-ビット MSB 実行可能 SPARC バージョン 1[動的にリンクされています][取り除かれています] # tar xvfp test.tar(←エラーになる) tar: ディレクトリの検査合計エラーです。 # /bin/tar xvfp test.tar(←違うtarでやってみるとエラーがでる) tar: This does not look like a tar archive tar: Skipping to next header tar: Archive contains obsolescent base-64 headers tar: Read 2636 bytes from test.tar tar: Error exit delayed from previous errors 上記のような現象になって困っています。パイプ以降をcompressに するとふつうにいけるので、gzipがおかしいような気もするのですが。 サイトを検索するとみなさんGNUのgtarをお勧めしているようですが そちらもだめでした。 どなたか解決策をご存知の方がいたらご教授願います。

  • tarで、ディレクトリ構造を持たずに、解答する

    tar cvf test.tar .A/B/C .A/B/D とすると、解凍する時に .A/B/というディレクトリ構造で解答されてしまいますよね? そうではなくて、解答したディレクトリにC, Dというファイルだけ解答したいんですけど。 そういうオプションとかってありますか?

  • tarで、ディレクトリ構造を持たずに、解答したい

    tar cvf test.tar .A/B/C .A/B/D とすると、解凍する時に .A/B/というディレクトリ構造で解答されてしまいますよね? そうではなくて、解答したディレクトリにC, Dというファイルだけ解答したいんですけど。 どうすればいいですかね?

  • tar(*.tgz)ファイルの解凍の際に「ディレクトリは状態を展開でき

    tar(*.tgz)ファイルの解凍の際に「ディレクトリは状態を展開できるようになる前に名前を変更されました」というエラーが出ます。 Linuxマシンでのバックアップをtarファイルにしました(20GB)。そして、そのtarファイルを、Win7マシンに接続しているUSBハードディスク(NTFS)にコピーして展開しました。ただし、展開の際には、win7上にVMwareをインストールして、仮想マシンとしてubuntsuを走らせ、ファイルの共有でUSBハードディスクを読み書きしています。その際、以下のようなエラーが出て終了しました。 ------------------------- tar: AAA/BBB/dir1/dir2: ディレクトリは状態を展開できるようになる前に名前を変更されました tar: AAA/BBB/dir1: ディレクトリは状態を展開できるようになる前に名前を変更されました tar: AAA/BBB/dir3: ディレクトリは状態を展開できるようになる前に名前を変更されました tar: AAA/BBB: ディレクトリは状態を展開できるようになる前に名前を変更されました tar: 前のエラーにより失敗ステータスで終了します -------------------------- 調べたところ、 AAA/BBB/dir1/dir2とAAA/BBB/dir3の中には、Linuxマシン上での他の場所に向けてシンボリックリンクファイルがあることがわかりました。 tarは、シンボリックリンクは無視すると思っていたのですが、このようなエラーがシンボリックリンクが原因で出ることがありえますか?それとも、他の原因でしょうか?