Назад | Перейти на главную страницу

Как сделать резервную копию 50 ГБ + файлов на Linux-сервере в удаленную учетную запись sftp

Как сделать резервную копию 50 ГБ + файлов на Linux-сервере в удаленную учетную запись sftp.

Мои требования

Мое решение

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

Затем я делаю инкрементное резервное копирование уровня 1, используя файл моментального снимка из полной резервной копии.

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

Вопросы

Пример кода

Это упрощенная версия моего сценария, иллюстрирующая проблему.

cd ~
mkdir backup-test
cd backup-test

mkdir data
mkdir rsync-copy
mkdir backup

# Create 10 10mb files
for i in 0 1 2 3 4 5 6 7 8 9 
do
    dd if=/dev/urandom of=data/file$i.txt bs=1048576 count=10
done

# Simulate rsnapshot of my files.
rsync data/* rsync-copy/

# Make full backup
/opt/bin/tar c -g backup/full.snar rsync-copy --file backup/full.tar

# Simulate rsnapshot of my files again. No changes in my files.
rsync data/* rsync-copy/

# Make incremental backup, this will create a new full copy.
cp backup/full.snar backup/inc.snar
/opt/bin/tar c -g backup/inc.snar rsync-copy --file backup/inc.tar

# Make incremental backup, this will not create a new full copy.
# Because we haven't executed rsync, which sets dates and stuff.
cp backup/inc.snar backup/inc2.snar
/opt/bin/tar c -g backup/inc2.snar rsync-copy --file backup/inc2.tar

Мне кажется, вам нравится rsnapshot, но не tar. Если это так, решение состоит в том, чтобы заменить tar чем-то, что сохраняет «единственные изменения» rsnapshot.

Я могу придумать два простых варианта:

  1. после rsnapshot найдите различия между последним и предыдущим снимками, чтобы сохранить только их в файле tar. Это могло быть просто diff, с некоторыми флагами, которые говорят ему не беспокоиться о проверке содержимого, чтобы определить точную разницу. Списка измененных файлов должно хватить. Другой способ - написать сценарий, который будет просматривать как снимки, так и сообщать о новых файлах и файлах с разными номерами inode.

  2. использовать rdiff-backup, который использует алгоритм rsync, но сохраняет различия вместо их передачи.