Saya perlu menggunakan proses otomatis (melalui skrip cron 1 menit) yang mencari file tar di direktori tertentu. Jika file tar ditemukan, itu tidak diarsipkan ke lokasi yang sesuai dan kemudian file tar dihapus.
File tar secara otomatis disalin ke server ini melalui SSH dari server lain. Dalam beberapa kasus, file tar sangat besar, dengan banyak file.
Masalah yang saya harapkan terjadi: Jika perlu> 1 menit untuk file tar untuk disalin ke server, dan skrip cron berjalan sekali setiap menit, itu akan melihat file .tar.gz dan mencoba untuk melakukan untar itu, meskipun file tar masih dalam proses untuk menulis.
Apakah ada cara (melalui perintah bash) untuk menguji apakah suatu file saat ini sedang ditulis, atau apakah itu hanya sebagian file, dll?
Salah satu alternatif yang saya pikirkan adalah memiliki file yang akan disalin sebagai ekstensi file yang berbeda (seperti .tar.gz.part
) dan kemudian diganti namanya .tar.gz
setelah transfer selesai. Tapi saya pikir saya akan mencoba mencari tahu apakah ada cara untuk menentukan apakah file tersebut utuh pada baris perintah pertama ... Ada petunjuk?
rsync
menggunakan nama file sementara selama transfer (secara default), dan hanya setelah file sepenuhnya ditransfer, mengganti nama file itu menjadi nama file yang sebenarnya.