GNU/Linux >> Linux の 問題 >  >> Linux

RSYNC がソース ディレクトリを削除しない

マンページには次のようにも書かれています:

--remove-source-files   sender removes synchronized files (non-dirs)

ソース内の空のディレクトリを削除したい場合、まだファイルが残っている場合は、次の操作を行います:

find . -depth -type d -empty -delete

空のソース ディレクトリの場合は、rmdir <directory> もちろん十分です。


--remove-source-files の振る舞い あなたが観察することは、正確に man rsync によって指定されたものです :

<ブロック引用>

--remove-source-files

   This tells rsync to remove from the sending side the files (meaning non-directories) that are a part of the transfer and have been successfully duplicated on the receiving side.

StackExchange と ServerFault でのこれら 2 つの議論が明確に示しているように、ディレクトリを削除するための特定のコマンドはありません。解決策として、2 つの別々のコマンドを発行することが提案されています:

 rsync -av --ignore-existing --remove-source-files source/ destination/ && \
 rsync -av --delete `mktemp -d`/ source/ 

これら 2 つの投稿で提案されているコマンドの最後の部分は、

 rmdir source/

OPと回答はrsyncを使用して同じマシン内で大量のファイルを移動しているため、(現在空になっている)ソースディレクトリを削除するために必要です。あなたの場合、これを手動で行う必要があります。


rm -rf」の使用 " には固有の競合状態があります。つまり、rsync の間に作成されたばかりのファイルを削除できます。 そしてRM 呼び出し。

使用することを好む:

<ブロック引用>

rsync --remove-source-files -a サーバー:着信/着信/ &&

sshserver 着信を検索 -type d -delete

ディレクトリが空でない場合、これはディレクトリを削除しません。


Linux
  1. 単一のファイルを RSYNC するには?

  2. 自動リピートが機能しない

  3. rsync は送信先のファイルを削除しません

  1. [解決済み]:rsyncが隠しファイル/ディレクトリをコピーしなかった理由とアスタリスクに隠し(ドット)ファイルが含まれていないのはなぜですか?

  2. scp はディレクトリを再帰的にコピーできますか?

  3. 新興企業は私の仕事を見ていません

  1. ディレクトリを比較しますが、ファイルの内容は比較しませんか?

  2. `source`の後にコマンド名を入力するとオートコンプリートが機能しないのはなぜですか?

  3. Vsftpdはディレクトリのコンテンツをリストしませんか?