Когда вы говорите «Вместо этого он всегда выполняется, как только запускается последний tar-файл», обычно это означает, что в конце строки стоит «&» ИЛИ Вы уверены, что tar действительно работает? Вы смотрите на старый tar.gz, который был создан раньше? Убедитесь, что это новый tar-файл правильного размера.
Редактировать Я не говорю, что вам нужно удалять файлы, просто dbl-проверьте, имеет ли смысл то, что помещается в конечный tar.
Проверяете ли вы размеры входных файлов для вашего окончательного tar cmd? (/home/temp_db.gz /backup/temp_ftp.tar)? Редактировать Под этим я подразумеваю, что несжатый tar-файл (temp_ftp.tar) должен быть немного больше, чем сумма размеров всех файлов, которые он содержит. Если вы знаете, что у вас есть 1 мегабайт файлов, составляющих файл temp_ftp.tar, и размер файла составляет 1,1 мегабайта, это хорошо, если оно составляет 0,5 мегабайта, тогда это плохо. (Также рассмотрите возможность gziping, чтобы сократить время передачи на удаленный хост). Ваш сжатый db-файл, трудно сказать, предположительно, работает, если размер файла составляет около 25 байтов, то это указывает на ошибку при создании файла.
В противном случае то, что вы говорите на самом деле кажется невозможным. Это одна из этих вещей, или что-то еще, запутывает вещи.
Один из способов отладить, сколько времени занимает последний tar, - это обернуть команду в две команды даты, т.е.
date
tar -Pcf /backup/temp_backup.tar /home/temp_db.gz /backup/temp_ftp.tar
rc=$?
date
printf "return code from quick tar was ${rc}\n"
Кроме того, для вашего заголовка «проверка предыдущего шага» я добавил захват кода возврата из tar и вывод значения.
Опять же, чтобы подтвердить то, что вы уже знаете, в сценарии оболочки linux, нет способа (кроме фонового задания с символом '&'), чтобы одна команда начала выполняться до завершения предыдущей.
РЕДАКТИРОВАТЬ владение и права доступа к вашим файлам могут испортить это владение и права доступа к вашим файлам. использовать \
ls -l /backup/temp_backup.tar /home/temp_db.gz /backup/temp_ftp.tar
, чтобы подтвердить, что ваш userID владеет файлами и что вы можете писать в них. Если хотите, отредактируйте свое сообщение, включив в него эту информацию.
Кроме того, ваш заголовок говорит «cron»: вы захватываете все возможные выходные данные этого сценария, чтобы помочь отладить ситуацию? Включите отладку оболочки с помощью set -vx
в верхней части файла makebackup.sh. Добавьте отладочный вывод в ваш tar cmd '-v'.
Захватите вывод cron всего процесса, как
59 23 31 12 * { /path/to/makebackup.sh 2>&1 ; } > /tmp/makebackup.`/bin/date +\%Y\%m\%d.\%H\%M\%S.trace_log
И убедитесь, что вы не нашли никаких сообщений об ошибках.
(образец Crontab, мин. Ч. День пн (день недели, 0-6 или *), изменение даты / времени в соответствии с потребностями тестирования)
Ваш ожидаемый скрипт использует '\ r', разве вы не хотите '\ n' в среде Unix / linux. Если вы сервер на базе Windows, то вам нужен '\ r \ n'.
Редактировать Работает ли ожидаемый сценарий, доказали ли вы, что файлы копируются, имеют ли они одинаковый размер на сайте резервного копирования, дата изменяется?
Если вы ожидаете, что резервные копии когда-нибудь спасут ваши системы, вам нужно лучше понять, как должен работать весь процесс и работает ли он так, как ожидалось. В зависимости от вашей ситуации и доступности альтернативных компьютеров вам следует запланировать проверку восстановления резервных копий, чтобы убедиться, что они действительно будут работать. Поскольку вы используете -P для сохранения информации о полном пути, вам действительно нужно быть осторожным, чтобы не перезаписать вашу рабочую систему старыми файлами.
Чтобы подвести итог моего совета, перепроверьте все.
Надеюсь, это поможет.