На самом деле я попытался написать свой собственный сценарий. Кажется, работает:
#!/bin/bash
find . -type f -iname "*5.mpg" -print0 | while IFS= read -r -d $'\0' line; do
new=${line//5.mpg}
zero="0.mpg"
buffer=$new$zero
new=$buffer
mv $line $new
echo "Moving $line"
done
Текущий (рабочий) каталог, вероятно, не установлен в /opt/www при запуске cronjob. Вы можете установить его в файле backup.sh вашего скрипта перед tar.....
line by:
cd /opt/www
или вы можете использовать полный путь в tar line by:
tar zcf backups/$FILENAME /opt/www/f
Я также могу посоветовать использовать полный путь для backups/$FILENAME
diff
может быть неправильным инструментом. Похоже, что необходимо использовать comm
, который классифицирует каждую строку как находящуюся в одном файле, другом файле или общую для обоих.
Однако ключевое ограничение состоит в том, что comm
требует сортировки обоих входных файлов
При запуске cronjob для текущего (рабочего) каталога, вероятно, не установлено значение/opt/www. Вы можете задать его в backup.sh сценария перед tar...
line by:
cd /opt/www
или вы можете использовать полный путь в строке tar по:
tar zcf backups/$FILENAME /opt/www/f
Я также могу посоветовать использовать полный путь для резервного копирования/$ FILENAME
Когда corntab
запускает код, он запускается с относительного пути, начиная с вашего домашнего каталога.
Простое исправление: В сценарии можно использовать абсолютный путь к каталогу (начиная с /
).
Другой метод: используйте «path _ dir» в коде для переносимости.
path=$(readlink -f $0)
path_dir=${path%/*}