私が欲しいとしましょう:
サーバーAのディレクトリからtarballを作成する
このタールボールをサーバーBにコピーします。
サーバーBで解凍
ssh root@serverB " scp root@serverA:/var/www/dirs.tar.gz /var/www/dirs.tar.gz && tar -xvf /var/www/dirs.tar.gz
パイプを使用してパスが重複するのを避けたい。 2番目のパラメータを取得するには、PIPEを使用して正しく作成するにはどうすればよいですか?
ありがとう
答え1
ディレクトリを圧縮してリモートサーバーにコピーしてからそこから解凍しますか?まあscp -r directory ...
、rsync -r directory ...
それともsftp
はるかに優れています。
tarファイルをリモートサーバーにコピーして抽出するには、次のようにします。
tar -cf - mydir | ssh [email protected] 'bash -c "tee archive.tar | tar -xf -"'
ここで重要なのは、tee
tarファイルのコピーをリモートファイルシステムに配置し、tarファイルをtarコマンドに渡して解凍することです。
おそらくあまり複雑ではない解決策は、rsync
tarファイルを生成できるリモートサーバーにディレクトリを転送することです。
答え2
タールボールをどのように生成するのかわからず、別の手順が必要ですが、tar
ファイルを作成/使用する必要がない場合は、次のようにします。
ssh serverA tar cz file… | tar xz
(これを助けるために、あなたがすでにroot@serverBであると仮定し、正しいディレクトリにいることを確認するなどのことは省略しています。)