リンクをたどったり、巨大なtarファイルを生成せずに再帰scpを使用しますか?

リンクをたどったり、巨大なtarファイルを生成せずに再帰scpを使用しますか?

そのため、リモートファイルサーバー(別の状態)で再帰scpを実行し、リモートWebディレクトリにリンクの無限ループが作成されました。

http://www.linuxquestions.org/questions/linux-general-1/recursive-scp-wo-following-links-658857/巨大なtarファイルを作ってみることができるそうです。しかし、問題があります。オフィスのLinuxボックスで再帰scpを実行し、すべてのファイルをFAT32形式の外付けハードドライブにコピーしています(UNIXとWindowsで利用可能なものが必要なため)。 FAT32は大容量ファイルサイズをサポートしていません。だから何か他のものを試す必要がありました。

rsyncオプションもありますが、私のオフィスのLinuxボックスは非常にプリミティブなので、rsyncはありません...

答え1

scpハードリンクまたはソフトリンクを正しく処理できず、ストリームが圧縮されないため、大きなファイルツリーを転送するために直接使用しないことをお勧めします。

私はcpioすぐに(オフ)圧縮をお勧めします:

ssh user@host "cd /path/to/files && find . | cpio -ov | bzip2 -c" | bunzip2 -c | cpio -ivd

また、find「ファイルは4G未満でなければなりません」などの他の条件も処理できます。

find . -size -4G | ...

cpioよりスペースにやさしいものにするには(ファイル名のスペースを適切に処理する)、次のようにします。

find . -print0 | cpio -0 -ivd | ...

答え2

別のオプションは、次のようsftp -rに使用することです。sftpこのマニュアルには次のように記載されています。

アップロードおよびダウンロード時にディレクトリ全体を繰り返しコピーします。 sftpは、ツリーナビゲーション中に見つかったシンボリックリンクに従いません。

だから

sftp -r source@surce_server.com:/source/dir .

まさにあなたがやりたいことです。

答え3

送信する前にtarファイルを作成する必要はありません。即座に作ることができます:

cd /source/dir
tar -cf - . | ssh 'cd /destination/directory && tar -xf -'

これを行うには、リモートサーバーがscp接続だけでなくSSHシェル接続も許可する必要があります。理論的には、ローカルファイル構造と一致しない任意のファイルツリーをリモート側に送信することは可能ですが、これを行うための既存のツールはありません。

シンボリックリンクが問題の場合、ソースツリーがハードリンクをサポートするファイルシステム(したがって、デフォルトのUnixファイルシステムまたはNTFSですが脂肪ではありません)。ここでは、GNUユーティリティを使用すると仮定します。

cd /source/dir
mkdir ../regular-files-only
cp -al . ../regular-files-only
find ../regular-file-only \! -type f \! -type d -delete

sftpを使用することもできます。sftp -rとは異なり、シンボリックリンクはフォローしませんscp -r

関連情報