Tôi cần triển khai một quy trình tự động (thông qua tập lệnh cron 1 phút) để tìm các tệp tar trong một thư mục cụ thể. Nếu một tập tin tar được tìm thấy, nó được xác định vị trí thích hợp và sau đó tập tin tar bị xóa.
Các tập tin tar được tự động sao chép vào máy chủ này qua SSH từ một máy chủ khác. Trong một số trường hợp, các tệp tar cực kỳ lớn, với rất nhiều tệp.
Vấn đề mà tôi đang mong đợi gặp phải: Nếu phải mất> 1 phút để tệp tar được sao chép vào máy chủ và tập lệnh cron chạy một lần mỗi phút, nó sẽ thấy tệp .tar.gz và cố gắng thực hiện gỡ bỏ nó, mặc dù tập tin tar vẫn đang trong quá trình ghi.
Có cách nào (thông qua các lệnh bash) để kiểm tra xem một tệp hiện đang được ghi vào hay không, nếu đó chỉ là một phần của tệp, v.v.?
Một cách khác tôi đã nghĩ đến là để tệp được sao chép dưới dạng một phần mở rộng tệp khác (như .tar.gz.part
) và sau đó được đổi tên thành .tar.gz
sau khi quá trình chuyển hoàn tất. Nhưng tôi đã tìm ra rằng tôi sẽ cố gắng tìm hiểu xem có cách nào đơn giản để xác định xem tập tin có phải là toàn bộ dòng lệnh hay không ... Có manh mối nào không?
rsync
sử dụng tên tệp tạm thời trong quá trình chuyển (theo mặc định) và chỉ sau khi tệp được chuyển hoàn toàn, đổi tên thành tên tệp thực tế.