
rsync
/a/b/ /c/d/と同等のコマンドmv
、つまり、ディレクトリ ツリーをある場所から別の場所 (別のファイル システム上など) に移動するためのコマンドは何ですか?
つまり、コピーするだけでなく、元の場所からファイルを削除します。これを使用する理由rsync
は、部分的な移動を再開し、帯域幅の使用を制限できるようにするためです。
答え1
このコマンドは、/a/b から /c/d までのすべてのファイルを同期し、権限、変更日、シンボリックリンクを保持し、ディレクトリを再帰的に調べます (「-a」または「--archive」はこれらすべてを実行します。これは「-rlptgoD」を使用するのと同じですが、これらはすべて別々のオプションです)。-v は詳細表示用で、「--remove-source-files」は、宛先にソース ファイルが完全に作成されたら、そのファイルを削除します。
/c/ 内のディレクトリ d が存在しない場合は作成されます。
rsync -av --remove-source-files /a/b /c/d
リモート サーバーに移動する場合は、リモート サーバーのパスに同期され、'-z' により転送中にファイル データが圧縮されます。
rsync -avz --remove-source-files /a/b user@hostname_or_ip:/c/d
ディレクトリは '--remove-source-files' では削除されないので、/a/b/ 内のすべてのディレクトリを削除するには、rsync の後に rm -rf /a/b を実行する必要があります。
1行のコマンドで次のように記述できます。
rsync -av --remove-source-files /a/b /c/d; if find /a/b/ -type f | read; then echo "Not all files were synced"; else rm -rf /a/b; fi
これにより、rsync が実行され、ファイルが残っているかどうかが確認され、一部のファイルが完全に同期されずに削除されなかった場合にフォルダーが削除されるのを防ぎ、すべてのファイルが同期されなかったことを出力するか、フォルダー内にファイルがない場合にはフォルダーを削除します。