
コンピュータ間で大きなフォルダ構造をコピーしようとしています。実際、その後に権限を「修正」することは不合理であるため、コピー中に所有権/権利を維持したいと思います。
そのため、次のコマンドを使用してprivsファイル全体をtarし、データをターゲットコンピュータに転送しました。両方のシステムに同じユーザーが存在します。
tar cfzp - foldertocopy | ssh me@machine "cat > /applications/incoming/foldertocopy.tar.gz"
転送が正常に動作します。次のステップは、リモートシステムでroot権限を使用してファイルを抽出することです。
問題は次のとおりです。圧縮データと圧縮されていないデータの両方を格納するディスク容量が不足しています。。
rsync / recursive scpを使用できますが、ユーザーに正しい権限でファイル自体を作成する権限がなく、ルートがリモートでログインできません。
私のオプションは何ですか?ソースコンピュータはRHEL4、ターゲットコンピュータはRHEL5です。
答え1
名前付きパイプをルートに設定します。
# mkfifo /tmp/fifo
# chmod o+w /tmp/fifo
次に、データを次のように転送しますme
。
$ tar cfzp - foldertocopy | ssh me@machine "cat > /tmp/fifo"
しかし、次のように読んでくださいroot
。
# tar -xfzp /tmp/fifo
答え2
この問題を解決する1つの方法は、sshにuntarを直接実行させることです。
tar cfzp - foldertocopy | ssh me@machine "cd rightplace; tar xzf -"
答え3
アーカイブrsyncを使用しないのはなぜですか?
rsync -avzHAX foldertocopy user@remoteserver:/file/path/to/copy
これにより、ファイルに関するすべての詳細を保存でき、「z」rsyncを使用してすぐにストリームを圧縮できます。