rsyncは、一部のファイルが見つからないソースからの新しいファイルのみをコピーします。

rsyncは、一部のファイルが見つからないソースからの新しいファイルのみをコピーします。

rsync最近、私は多くのファイルとサブディレクトリを含む大きなディレクトリを外付けハードドライブにコピーしてきました。一部のファイルにはファイル名が長すぎてrsyncコピーできません。問題のあるファイル名を切り捨てた後、結果の新しいファイルをコピーしたいと思います。

ソースディレクトリに私が削除したファイルがいくつかありますが、ターゲットディレクトリのどのファイルも私が削除したくありませんrsync。ソースから新しいファイルをコピーし、最後にソースとターゲットの間に共通のすべてのファイルをソースから削除しながら、ソースにミラーリングせずにそのまま残したい(--remove-from-source)。

rsync -nrhtPsv --stats --ignore-existing --remove-source-files /run/media/username/hdd1/DIR1 /run/media/username/external_hdd

私が知る限り、--ignore-existing両者は--remove-source-files互換性がありません。

--ignore-existingそして--update、練習実行では削除/削除に関する情報は表示されませんが、すべてファイルが見つからないディレクトリへのパスが一覧表示されます。

私がしたいことをどのようなコマンドで実行できますか?

ベストアンサー1

さまざまな規格:

  • ターゲットディレクトリの何も削除したくないrsync- 指定しない--delete
  • [...]から新しいファイルをコピーしたいです。- いつものように
  • ソースとターゲットの間で共通のすべてのファイルをソースから削除します。- 使用--remove-source-files

あなたが言及していないのは、ターゲットの既存のファイルを更新する必要があるかどうかであるため、更新する必要があるとします。

結果のコマンドは次のとおりです。

rsync --dry-run -rt -Phv --stats --remove-source-files /run/media/username/hdd1/DIR1 /run/media/username/external_hdd

--dry-run変更を表示するだけではなく、実行するには削除してください。)

現在発生している問題は除外ルールとして実装されています--ignore-existing --remove-source-files--ignore-existingこれは、ターゲットに存在するファイルが無視されるが無視できないことを意味します--remove-source-files。場合によっては、--backup --remove-source-files以下を使用してターゲットからバックアップを復元できます。

find /run/media/username/external_hdd -type f -name '*~' -exec sh 'for f in "$@"; do echo mv -f "${f} "${f%~}"; done' _ {} +

echo表示のみではなく名前の変更を行う場合は削除してください。)

おすすめ記事