Если $X
параметр, где новая версия хранится,
ed file << EOF
g/^version =/s/.*/version = '$X'/
g/^release =/s/.*/release = '$X'/
w
q
EOF
Это принимает $X
имеет рыночную стоимость, как 1.2.3-foo
, и никакие символы, которые специальны для ed
интерпретатор команд.
Для вставки текущей даты в имя файла звоните date
команда в замене команды.
tar -czf monitor-$(date -d %Y-%m-%d).tar.gz …
Я рекомендую использовать формат дня месяца года для даты по нескольким причинам: лексикографический порядок соответствует хронологическому порядку; нет никакого риска беспорядка между американским дневным годом месяца и заграничным дневным годом месяца; это - стандарт ISO.
Для исключения нескольких каталогов необходимо повториться --exclude
для каждого из них: если Вы пишете tar -czf monitor.tar.gz --exclude dir1 dir2
, затем dir2
путь должен включать в архив, только dir1
аргумент --exclude
.
tar -czf monitor-$(date -d %Y-%m-%d).tar.gz --exclude /var/www/html/monitor/cache /var/www/html/monitor/log /var/www/html/monitor
Хранить файлы, которые были изменены после определенной даты, передача --newer
опция. Можно указать или ссылочный файл или дату. Это намного более надежно для работы с файлом метки времени: создайте тот файл перед каждым резервным копированием и используйте файл метки времени от предыдущего резервного копирования как ссылка для следующей.
touch monitor-backup.timestamp.new
tar … --newer=./monitor-backup.timestamp
mv -f monitor-backup.timestamp.new monitor-backup.timestamp
Вы, кажется, прокручиваете свою собственную систему инкрементного резервного копирования. Это удивительно трудно сделать надежно. Я рекомендую использовать существующее приложение резервного копирования, такое как Двуличность.
Что касается опущенного каталога, необходимо будет использовать --exclude
опция для каждого каталога, это не означает, что это исключает все после него. Некоторые команды примут разделенные значения запятой, но не все они.
tar -zcvf /home/monitor.tar.gz /var/www/html/monitor --exclude /var/www/html/monitor/cache --exclude /var/www/html/monitor/log
Что касается части добавления даты, с Вашим объяснением того, что Вы ищете, я думаю, что можно использовать:
-d, --diff, --compare
find differences between archive and file system
править: Вот быстрый небольшой сценарий, чтобы сделать это. Нет никакой проверки ошибок или чего-либо, но это - запуск.
NEW_FILE="monitor.`date +%d.%m.%Y`.tar.gz"
PREV_FILE={However you want to find this}
tar cf $NEW_FILE `tar --diff -f $PREV_FILE | awk --field-separator=: '{print $1}' | uniq`
--update
Я хочу создать некоторое различие для сокращения размера файла. Менее сказанный, например, первый файл будет иметь 20 МБ, но второй будет иметь только 20 КБ, потому что только два файла были отредактированы, это - то, что я хочу
– Reynier
18.06.2013, 01:32
--diff
который может быть полезен для Вас здесь.
– pferate
18.06.2013, 01:53
tar -czvf monitor-$(date -d %Y-%m-%d).tar.gz --exclude /var/www/html/monitor/cache --exclude /var/www/html/monitor/log
, 2 Создают файл метки времени при помощиtouch monitor-backup.timestamp.new
, 3 Создают остальную часть файлов при помощиtar -czvf monitor-$(date -d %Y-%m-%d).tar.gz --exclude /var/www/html/monitor/cache --exclude /var/www/html/monitor/log --newer=./monitor-backup.timestamp
, 4 Перемещения файлы при помощиmv -f monitor-backup.timestamp.new monitor-backup.timestamp
это правильно? – Reynier 18.06.2013, 16:42