ฉันต้องการปรับใช้กระบวนการอัตโนมัติ (ผ่านสคริปต์ cron 1 นาที) ที่ค้นหาไฟล์ tar ในไดเรกทอรีที่ระบุ หากพบไฟล์ tar ไฟล์นั้นจะถูก untarred ไปยังตำแหน่งที่เหมาะสมจากนั้นไฟล์ tar จะถูกลบ
ไฟล์ tar จะถูกคัดลอกไปยังเซิร์ฟเวอร์นี้โดยอัตโนมัติผ่าน SSH จากเซิร์ฟเวอร์อื่น ในบางกรณีไฟล์ tar มีขนาดใหญ่มากพร้อมไฟล์จำนวนมาก
ปัญหาที่ฉันคาดว่าจะพบ: หากใช้เวลา> 1 นาทีเพื่อให้คัดลอกไฟล์ tar ไปยังเซิร์ฟเวอร์และสคริปต์ cron ทำงานทุก ๆ นาทีก็จะเห็นไฟล์. tar.gz และลองทำ untar มันแม้ว่าไฟล์ tar ยังอยู่ในขั้นตอนการเขียน
มีวิธีใดบ้าง (ผ่านคำสั่ง bash) เพื่อทดสอบว่าไฟล์นั้นกำลังถูกเขียนไปหรือไม่หรือเป็นเพียงไฟล์บางส่วนเท่านั้น?
อีกทางเลือกหนึ่งที่ฉันคิดว่าคือการคัดลอกไฟล์เป็นนามสกุลไฟล์อื่น (เช่น.tar.gz.part
) แล้วเปลี่ยนชื่อเป็น.tar.gz
หลังจากการถ่ายโอนเสร็จสมบูรณ์ แต่ฉันคิดว่าฉันพยายามที่จะคิดออกว่ามีเพียงวิธีการตรวจสอบว่าไฟล์ทั้งหมดที่บรรทัดคำสั่งแรก ... เบาะแสใด ๆ ?
rsync
ใช้ชื่อไฟล์ชั่วคราวในระหว่างการถ่ายโอน (โดยค่าเริ่มต้น) และหลังจากโอนไฟล์อย่างสมบูรณ์แล้วให้เปลี่ยนชื่อเป็นชื่อไฟล์จริง