Halaman manual bahkan mengatakan:
--remove-source-files sender removes synchronized files (non-dirs)
Jika Anda ingin menghapus direktori kosong di sumber Anda, jika masih ada file yang tersisa, lakukan:
find . -depth -type d -empty -delete
Jika itu hanya direktori sumber kosong, rmdir <directory>
tentu saja akan cukup.
Perilaku --remove-source-files
yang Anda amati persis seperti yang ditentukan oleh 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.
Tidak ada perintah khusus untuk menghapus direktori, seperti yang ditunjukkan dengan jelas oleh dua diskusi di StackExchange dan ServerFault ini. Solusi yang disarankan adalah mengeluarkan dua perintah terpisah:
rsync -av --ignore-existing --remove-source-files source/ destination/ && \
rsync -av --delete `mktemp -d`/ source/
Bagian terakhir dari perintah yang disarankan dalam dua posting ini,
rmdir source/
yang diperlukan untuk menghapus direktori sumber (sekarang dikosongkan) memiliki formulir ini di posting ini karena OP dan jawabannya menggunakan rsync untuk memindahkan file dalam jumlah besar di dalam mesin yang sama. Dalam kasus Anda, Anda harus melakukannya secara manual.
Menggunakan "rm -rf " memiliki kondisi balapan yang melekat, yaitu Anda dapat menghapus file yang baru saja dibuat antara rsync dan rm doa.
Saya lebih suka menggunakan:
rsync --remove-source-files -a server:masuk/masuk/ &&
sshserver menemukan -type d -delete
yang masuk
Ini TIDAK akan menghapus direktori jika tidak kosong.