Saya harus memindahkan beberapa file dari satu sistem file ke yang lain di bawah Ubuntu. Namun, sangat penting bahwa file tidak pernah ada sebagai file parsial atau tidak lengkap di tujuan, setidaknya tidak dengan nama file yang benar.
Sejauh ini, satu-satunya solusi saya adalah dengan menulis skrip yang mengambil setiap file, menyalinnya ke nama sementara di tujuan, kemudian mengganti nama (yang menurut saya harus atomis) di tujuan ke nama file asli dan akhirnya menghapus file yang berasal .
Namun, menulis dan men-debug skrip sepertinya terlalu berat untuk tugas ini. Apakah ada cara atau alat yang sudah melakukan ini secara asli?
Jawaban:
rsync
salinan ke nama file sementara (mis. lihat ekstensi file sementara Rsync dan rsync - apakah itu membuat file temp selama transfer? ) kecuali Anda menggunakan--inplace
opsi. Itu mengubah nama mereka hanya setelah file telah berhasil ditransfer.rsync
juga menghapus semua file tujuan yang hanya ditransfer sebagian (mis. karena disk penuh atau kesalahan lainnya).Ada juga
--remove-source-files
opsi yang menghapus file sumber setelah mereka berhasil ditransfer. Lihatrsync
halaman manual untuk lebih jelasnya.Menyatukan semua itu, Anda bisa menggunakan sesuatu seperti:
Opsi ini sangat berguna untuk tugas-tugas seperti memindahkan file dari antrian "masuk" atau mirip dengan direktori di mana mereka akan diproses.
Atau, jika ini cermin sekali pakai, mungkin gunakan saja
rsync
tanpa--remove-source-files
opsi. Anda dapat menghapus file sumber nanti jika Anda mau / perlu.sumber
rsync
bisa dilakukan, dan saya tahu itu mentransfer file dengan nama temp (kecuali Anda menggunakan--inplace
), jadi saya melihat masukman rsync
dan ditemukan--remove-source-files
.rsync
adalah alat yang baik untuk memeriksa dulu hampir semua tugas transfer file.