マンページには次のようにも書かれています:
--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
ディレクトリが空でない場合、これはディレクトリを削除しません。