Резервное копирование файла при редактировании и присвоение ему отметки времени? [дубликат]

На этот вопрос уже есть ответ здесь:

Я хочу создать резервную копию определенного файла в в другую папку каждый раз, когда файл менялся. В идеале резервный файл должен иметь временную метку при резервном копировании. Например:

Рабочий файл каталога

~/workfile

Резервный файл каталога

~/backup/workfile-2014-11-24-10:30
~/backup/workfile-2014-11-24-11:10
~/backup/workfile-2014-11-24-12:40
~/backup/workfile-2014-11-24-15:42
~/backup/workfile-2014-11-24-16:30

Я хотел бы иметь решение без использования графического интерфейса.

2
задан 24 November 2014 в 15:21

3 ответа

Не протестированный, но я приблизился бы к проблеме таким образом:

сценарий:

#!/bin/bash
BACKUP_LOCATION='backup'
FILE_TO_MONITOR='workfile'
PREVIOUS_MD5='000'

if [ ! -d "$BACKUP_LOCATION" ]
then
    mkdir -p "$BACKUP_LOCATION"
    echo "Init backup dir..."
fi

while true
do
MY_TIMESTAMP=`date +"%Y-%m-%d-%H:%M:%S"`
MY_MD5=`md5sum "$FILE_TO_MONITOR"`
if [ "$MY_MD5" != "$PREVIOUS_MD5" ]
    then
    cp -f "$FILE_TO_MONITOR" "${BACKUP_LOCATION}/${FILE_TO_MONITOR}-${MY_TIMESTAMP}"
    PREVIOUS_MD5=$MY_MD5
    echo "File changed at $MY_TIMESTAMP."
    fi
done

процедура: выполните этот сценарий как демона. Вывод можно перенаправить его к файлу журнала даже.

0
ответ дан 10 November 2019 в 04:41

Im, не совсем уверенный в том, что вариант использования здесь. Но вместо того, чтобы сделать "резервные копии" файлов согласно определенной метке времени не он лучше только для хранения изменений между версиями?!

, Если you'r файлы не являются двоичными, как текст или исходный код с помощью мерзавец

, если бы они являются двоичными, я использовал бы rsnapshot, поскольку это автоматически создаст параллельную структуру папок с версиями каждого файла, но только хранения копии файлов, которые на самом деле имеют изменения в них (оставление свободного места)

СОХРАНЕНИЕ В ПАПКЕ его согласно времени снимка. например, day2/hour3

, хранящий дату в самом имени файла, кажется избыточным. rsnapshot сохраняет ту информацию и через структуру папок, которую это создает для резервных копий, и можно также видеть его в день самого файла.

МЕРЗАВЕЦ покажет Вам дату фиксации каждого изменения, которое она фиксировала для каждого файла.

0
ответ дан 10 November 2019 в 04:41

По-моему задание зерна является лучшей альтернативой, чем какой-либо бесконечный цикл. Я принимаю ~/backup, папка уже существует. Можно установить задание зерна для выполнения следующего сценария в интервале n минуты в зависимости от их потребности. Это будет служить цели.

Выполнение сценарий в интервале 5 минут

crontab открытого пользователя (конфигурационный файл крона) от терминала как, crontab -e. Добавьте, что следующая строка для выполнения сценария в интервале 5 минут,

*/5 * * * * /path/to/script

не забывают давать сценарию разрешение выполнения: chmod u+x /path/to/script

сценарий

#!/bin/bash
msrc="/home/$USER"
mdst="/home/$USER/backup"
msrcfile="workfile"
mnewfile="$msrcfile"-$(date +"%Y-%m-%d-%H:%M")
checkfile="$(for i in "$mdst"/*; do echo "$i"; done | xargs ls -1t > /dev/null 2>&1 | head -1)"

if [[ "$msrc"/"$msrcfile" -nt "$checkfile" ]]; then
    cp "$msrc"/"$msrcfile" "$mdst"/"$mnewfile"
fi

От man bash:

CONDITIONAL EXPRESSIONS
file1 -nt file2
          True if file1 is newer (according to modification date) than file2, or if  file1
          exists and file2 does not.

От man ls:

-t     sort by modification time, newest first
0
ответ дан 10 November 2019 в 04:41

Другие вопросы по тегам:

Похожие вопросы: