Улучшение производительности системы путем остановки демонов / сервисов

Это (вариант) используемого сценария (/home/pduck/bup.sh):

#!/usr/bin/env bash

src_dir=/home/pduck
tgt_dir=/tmp/my-backups
mkdir -p $tgt_dir

# current backup directory, e.g. "2017-04-29T13:04:50";
now=$(date +%FT%H:%M:%S) 

# previous backup directory
prev=$(ls $tgt_dir | grep -e '^....-..-..T..:..:..$' | tail -1); 

if [ -z "$prev" ]; then
    # initial backup
    rsync -av --delete $src_dir $tgt_dir/$now/
else
    # incremental backup
    rsync -av --delete --link-dest=$tgt_dir/$prev/ $src_dir $tgt_dir/$now/
fi

exit 0;

Он использует rsync для локальной копии файлов из моего домашнего каталога в резервную папку, [ f5] в моем случае. Ниже этого целевого каталога создается каталог с текущей временной меткой, например. /tmp/my-backups/2018-04-29T12:49:42 и ниже этого каталога помещается резервная копия этого дня.

Когда сценарий запускается еще раз, он замечает, что уже существует каталог /tmp/my-backups/2018-04-29T12:49:42 (он выбирает «последний» каталог который соответствует шаблону метки времени). Затем он выполняет команду rsync, но на этот раз с переключателем --link-dest=/tmp/my-backups/2018-04-29T12:49:42/, чтобы указать на предыдущую резервную копию.

Это фактическая точка создания инкрементных резервных копий:

С помощью [ f10] rsync не копирует файлы, которые не изменились по сравнению с файлами в каталоге link-dest. Вместо этого он создает жесткие ссылки между текущими и предыдущими файлами.

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

Уборка также очень проста: просто rm -rf каталог временной метки, который вы не хотите хранить. Это не приведет к удалению старых или новых или неизменных файлов, просто удалите (уменьшите) жесткие ссылки. Например, если у вас есть три поколения:

/tmp/my-backups/2018-04-29T... /tmp/my-backups/2018-04-30T... /tmp/my-backups/2018-05-01T...

и удалить второй каталог, то вы просто потеряете жесткие ссылки [!d5 ] этого дня, но файлы все еще находятся в 1-м или 3-м каталоге (или и то, и том же).

Я положил cronjob в /etc/cron.daily, который гласит:

#!/bin/sh
/usr/bin/systemd-cat -t backupscript -p info /home/pduck/bup.sh
15] Назовите этот файл backup или что-то, chmod +x, но опустите суффикс .sh (тогда он не будет запущен). Из-за /usr/bin/systemd-cat -t backupscript -p info вы можете наблюдать прогресс через journalctl -t backupscript.

Обратите внимание, что это решение rsync требует, чтобы целевой каталог находился в файловой системе ext4 из-за жестких ссылок.

1
задан 13 April 2017 в 15:25

0 ответов

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

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