У меня есть скрипт bash, который запускается как cron для резервного копирования файлов на сервере.
#!/bin/bash
FILE=/path/to/backup_$(date +%Y%m%d).tar
tar -cf $FILE /backup/this /and/that /and/someotherfiles
gzip $FILE
Когда я запускаю скрипт напрямую, используя:
sudo bash ./backup-files.sh
Он сжал файл, но прошлой ночью, когда cron запустил его, он оставил его как tar. Хронил ли бы хрон где-нибудь журнал, который указывал бы, почему это может иметь место?
Является ли раздел, в котором находится резервная копия, на своих границах?
Ваш скрипт создал архив, но у gzip не осталось места для его сжатия.
(вы можете объединить обе команды с флагом -z для tar)
Woops, я забыл одну вещь: добавить флаг -v к вашей команде tar. Он покажет, что он делает.
Как уже упоминал Пьер, вы можете использовать флаг -z. Обычно я всегда использую tar zcvfP для резервного копирования целых каталогов и сохранения их структуры и разрешений. Флаг v там тоже полезен.
Если снова случится так, что ваш скрипт не будет делать то, что вы хотите, вы можете добавить set -x
поверх вашего скрипта. Он выведет именно то, что делает, и этот вывод часто помогает находить ошибки. Если вы называете это как cronjob, убедитесь, что $EMAIL
установлено соответствующим образом.