Я хочу использовать tar для каталога через определенные промежутки времени (скажем, каждое утро в 4 часа ночи), поэтому я планировал использовать crontab. Как я могу указать дату в имени файла, например srcdirectorybackup5-30-09.tar, чтобы я мог различать все файлы tar.
ACK!
несколько человек предложили замечательное решение в стиле date +% Y% m% d_% H% M% S, но никто не упомянул главное предостережение "%" в crontabs ...
'%' эквивалентно '\ n', поэтому ваша cronjob, скорее всего, сработает и загадочно выйдет из строя!
Скорее всего, вы захотите просто избежать его с помощью обратной косой черты, подобной этой (и я также хотел бы получить какой-то инвентарь или другой вывод, чтобы проверить, работает ли он).
0 4 * * * tar vcf /path/to/dsttarfile.tar.`date +\%Y\%m\%d_\%H\%M\%S` /path/to/srcdir > /path/to/logfile.log 2>&1
Вы можете рассмотреть возможность использования `date +% w 'как части вашего tar-файла, чтобы у вас был tar-файл для каждого из последних 7 дней, и вам не нужно было беспокоиться об удалении старых копий.
Вам нужны даты в формате ISO - ГГГГ-ММ-ДД. Так они правильно сортируют.
tar -cf srcdirectorybackup`date +%F`.tar /path/to/src
Предполагается, что в пути есть tar и date. Вы можете добавить эту строку в crontab.
Кричалки! ericlaw абсолютно верно. Эти символы% необходимо экранировать, если они используются в файле crontab, иначе они будут интерпретированы как символы новой строки!
Итак, если вы собираетесь поместить эту строку прямо в crontab, экранируйте «%» с помощью «\».
tar -cf srcdirectorybackup`date +\%F`.tar /path/to/src
Репутация действительно должна перейти к Эрикславу ...
предполагая, что вы можете обрабатывать материал crontab, для bash команда будет следующей:
bash -c "tar -cf `date +%F`test.tar foo bar"
Конечно, foo и bar - это файлы, test.tar - это остальная часть суффикса, который вы хотите для файла, и вы можете указать любую нужную опцию :)
Это работает как в cygwin, так и в Linux. Я недостаточно знаком с cron, чтобы знать, нужно ли указывать ему, какую оболочку использовать таким образом.
Во многих дистрибутивах Linux вы должны выполнить следующие шаги:
Создайте файл /home/scripttaringsrc.sh
tar -cf srcdir 'date +%Y-%m-%d_%Hh%Mm'.tar /path/to/dst
Не забудьте изменить скриптtaringsrc.sh с помощью chmod для выполнения разрешений.
У меня есть этот небольшой скрипт, который упаковывает весь мой каталог etc и сохраняет его в каталоге с правильной датой.
Сохраните этот скрипт и поместите его в /etc/cron.daily/ (если он доступен в вашем dist), поскольку скрипты, находящиеся в этом каталоге, чаще всего выполняются «по одному в день», чаще всего около 4. Однако беглый взгляд в / etc / crontab покажет точную информацию.
#!/bin/sh
date=`date +%Y%m%d-%H%M`
#echo Tid: $date
bpath=/var/backup/computername
cd $bpath/
mkdir sys$date
cd sys$date
datumfil=$bpath/sys$date/$date
> $datumfil
tar -cvzf etc.tar.gz /etc/ > etc.tar.gz.list
md5sum * > md5sum
ls -lh >> md5sum
Примечание: вам нужно немного изменить это, чтобы получить "правильное" имя файла, которое вы хотели.
/ Йохан