บล็อกต้อนรับต้นเดือนและวันแรงงาน ด้วยจำเป็นต้องย้ายไฟล์จำนวนน้อยนิดมหาศาล แบบเร่งด่วน จำนวนหนึ่งไปไว้อีกทีและงานนี้ก็ห้ามหยุดจนกว่างานจะเสร็จ (นี่มันสะท้อนชีวิตใครบ้างไหม ^__^) ใครมีงานแบบนี้ต้องทำแบบด่วน ๆ และไม่มีเวลาให้ต้องมามอนิเตอร์และรันใหม่อีกรอบ ก็ใช้สคริปท์นี้ไปปรับได้
อธิบายคร่าว ๆ คือ
- ใช้ rsync ในการโอนย้ายไฟล์ไปอ่านรายละเอียดต่อได้ที่นี่
- อาจมีบางช่วงหรือ error ขัดจังหวะช่วงโปรแกรม rsync ทำงานแล้วโปรแกรมปิดตัวลงก็ให้โปรแกรม rsync กลับมาทำงานต่อ (Loop) จนกว่าจะสำเร็จ (ดูบังคับมากมาย)
- เสร็จแล้วก็ Line notify นิดนึง
#!/usr/bin/env bash # Declare an array of Token declare -a ACCESS_TOKENS=("token1" "token2") START=$(date +"%d-%m-%Y %H:%M") RC=1 while [[ $RC -ne 0 ]] do NOW=$(date +"%d-%m-%Y %H:%M") rsync -arv --partial --progress --ignore-errors [source] [destination] RC=$? if [[ $RC -ne 0 ]] ; then echo "$NOW Rsync failure. Backing off and retrying..." sleep 180 fi done # Iterate the token array for token in "${ACCESS_TOKENS[@]}"; do echo $token curl -X POST https://notify-api.line.me/api/notify -H "Authorization: Bearer $token" -F "Rsync start $START completed normally" > /dev/null 2>&1 done echo "Rsync start $START completed normally"
จบปิ๊งงง (ไม่ได้ดื้อก็แค่พยายาม)
ป.ล.
เผื่อเคสต้องรีสตาร์ทก็เอาไปไว้ใน cron job ด้วยนะ ^__^