Tôi có một crontab:
* * * * * /home/ipa/web/backup.sh > /dev/null 2>&1
(Không, nó không chạy mỗi phút chỉ thử nghiệm ở đây)
Backup.sh có cái này:
#!/usr/bin/env sh
sqlite3 /home/ipa/web/ipa_django/mysite/db.sqlite3 ".backup 'backup_file.sqlite3'"
src="/home/ipa/web/backup_file.sqlite3"
để giây=$(ngày +%H)*3600+$(ngày +%M)*60+$(ngày +%S)
tiếng vang $ giây
tên tệp = "db.sqlite3"
tiếng vang $filename.$seconds
dest="/home/ipa/web/db_backups/"$filename.$seconds
cp $src $dest
cd /home/ipa/web/db_backups
tar -cvzf ipadbbackup.tar.gz $filename.$seconds
cd/nhà/ipa/web/
cp /home/ipa/web/db_backups/ipadbbackup.tar.gz ipadbbackup.tar.gz
rm /home/ipa/web/db_backups/$filename.$seconds
rm /home/ipa/web/db_backups/ipadbbackup.tar.gz
#rm "$srcfile"
/usr/bin/bash start-app.sh;
echo "Chạy sao lưu email"
sao lưu python2.7_via_email.py
rm ipadbbackup.tar.gz
Ý tưởng là tôi sao chép cơ sở dữ liệu vào một khu vực đầu, nén nó lên, sao chép nó vào nơi mà một tệp .py khác có thể tìm thấy và gửi nó qua email dưới dạng bản sao lưu.
Vấn đề là:
Nếu tôi chạy tập lệnh này từ nơi nó tồn tại:
/nhà/ipa/web/
với một ./backup.sh
Nó hoạt động rất tốt, tôi nhận được tệp trong email của mình hoạt động rất tốt:
db.sqlite3.77627
hoặc những gì không ... vấn đề là khi nó chạy dưới dạng cron, tệp không hoàn chỉnh và tên tệp là:
db.sqlite3.
Tôi không thể hiểu điều gì về việc nó chạy như một cron đang khiến nó thất bại về cơ bản? Tệp trong tar cũng nhỏ hơn 2,1k? Vì vậy, không chắc chuyện gì đang xảy ra... thậm chí không biết phải tìm ở đâu.