ฉันมี crontab:
* * * * * /home/ipa/web/backup.sh > /dev/null 2>&1
(ไม่ มันไม่ได้ทำงานทุกนาที แค่ทดสอบที่นี่)
backup.sh มีสิ่งนี้:
#!/usr/bin/env sh
sqlite3 /home/ipa/web/ipa_django/mysite/db.sqlite3 ".backup 'backup_file.sqlite3'"
src="/home/ipa/web/backup_file.sqlite3"
ให้วินาที=$(วันที่ +%H)*3600+$(วันที่ +%M)*60+$(วันที่ +%S)
สะท้อน $ วินาที
ชื่อไฟล์ = "db.sqlite3"
echo $filename.$seconds
dest="/home/ipa/web/db_backups/"$filename.$วินาที
cp $src $ปลายทาง
ซีดี /home/ipa/web/db_backups
tar -cvzf ipadbbackup.tar.gz $ชื่อไฟล์.$วินาที
ซีดี /โฮม/ipa/เว็บ/
cp /home/ipa/web/db_backups/ipadbbackup.tar.gz ipadbbackup.tar.gz
rm /home/ipa/web/db_backups/$filename.$วินาที
rm /home/ipa/web/db_backups/ipadbbackup.tar.gz
#rm "$srcfile"
/usr/bin/bash start-app.sh;
echo "กำลังสำรองข้อมูลอีเมล์"
python2.7 backup_via_email.py
rm ipadbbackup.tar.gz
แนวคิดคือฉันคัดลอกฐานข้อมูลไปยังพื้นที่เริ่มต้น ซิปขึ้น คัดลอกไปยังตำแหน่งที่ไฟล์ .py อื่นสามารถค้นหาได้ และส่งอีเมลออกไปเป็นข้อมูลสำรอง
ปัญหาคือ:
ถ้าฉันเรียกใช้สคริปต์นี้จากที่ที่มันอยู่:
/บ้าน/ipa/เว็บ/
ด้วย ./backup.sh
ใช้งานได้ดี ฉันได้รับไฟล์ในอีเมลใช้งานได้ดี:
db.sqlite3.77627
หรือไม่ ... ปัญหาคือเมื่อรันเป็น cron ไฟล์ไม่สมบูรณ์และชื่อไฟล์คือ:
db.sqlite3.
ฉันไม่สามารถเข้าใจได้ว่ามันทำงานอย่างไรเนื่องจาก cron ทำให้มันล้มเหลวเป็นหลัก? ไฟล์ใน tar นั้นเล็กกว่า 2.1k ด้วย? ไม่แน่ใจว่าเกิดอะไรขึ้น ... ไม่แน่ใจว่าจะดูที่ไหน