не удается выполнить инкрементное резервное копирование с помощью TAR

Среда: Ubuntu 16.04 в Azure

Я пытаюсь создать резервную копию определенных папок. Я использую простую команду tar без сжатия. Моя цель - хранить файл в течение месяца, постепенно добавляя изменения один раз в день, затем сжимать tar и запускать новый один раз в месяц.

Моя проблема заключается в следующем: локальные резервные копии не имеют смысла для меня, потому что если локальная файловая система умирает или возникает ошибка, как исходный, так и резервный. (кажется очевидным, но я заявляю для ясности)

Я пробовал выполнить резервное копирование в отдельный контейнер хранилища Azure с помощью SMB-соединения, а также на другой идентичный компьютер Ubuntu через NFS.

Я попробовал второй вариант, потому что прочитал эту статью: инкрементное резервное копирование tar выполняет резервное копирование всего, каждый раз при использовании в каталоге Dropbox

Итак, что бы я ни делал, tar, кажется, игнорирует флаг -u при выполнении следующей команды:

cd /savelocation; sudo /bin/tar --ignore-failed-read -up -f /savelocation/backupfoldername.tar /var/www/foldertobackup

Вместо получения несколько дополнительных мегабайт, которые будут представлять добавленные или измененные файлы, я получаю файл размером 44 ГБ, что вдвое превышает размер оригинала.

Любые мысли или вопросы приветствуются.

1
задан 6 June 2017 в 04:43
2 ответа

Согласно моим тестам здесь.


Первое: Я считаю, что компакт-диск не нужен для выполнения команды.

Второе: вы должны использовать - list-incremental в своей команде.

-g, --listed-incremental ФАЙЛ

обрабатывать новое инкрементное резервное копирование в формате GNU


Похоже, что - list-incremental , работает только тогда, когда у вас уже есть файл TAR, согласно моим тестам и с одним из наблюдений, перечисленных в комментариях.

папка с пустыми файлами

$ ll folder
total 8,0K
-rw-rw-r-- 1 ivanleon ivanleon 9 Jun  6 11:32 file1
-rw-rw-r-- 1 ivanleon ivanleon 9 Jun  6 11:32 file2
-rw-rw-r-- 1 ivanleon ivanleon 0 Jun  6 11:27 file3

создание архива Tape ARchive

$ sudo /bin/tar -cvf folder.tar folder
folder/
folder/file2
folder/file3
folder/file1

список архива ленты

$ tar tvf folder.tar 
drwxrwxr-x ivanleon/ivanleon 0 2017-06-06 11:27 folder/
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file2
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file3
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file1

добавление / изменение данных в некоторых файлах папки

$ echo "newdata1" >> folder/file1
$ echo "newdata2" >> folder/file2

создание нового файла архива ленты (выполнение инкрементного резервного копирования)

$ sudo /bin/tar -cvf --listed-incremental folder.tar folder
folder.tar
folder/
folder/file2
folder/file3
folder/file1

список файла архива ленты (файлы были заменены)

$ tar -tvf folder.tar 
drwxrwxr-x ivanleon/ivanleon 0 2017-06-06 11:27 folder/
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file2
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file3
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file1
0
ответ дан 4 December 2019 в 04:51

Я провел еще несколько исследований по поводу --listed-incremental. Большинство статей в лучшем случае сбивали с толку, не имея достаточно подробностей для полного понимания. Затем я нашел следующую статью, в которой очень четко объяснялось:

http://paulwhippconsulting.com/blog/using-tar-for-full-and-incremental-backups/

Единственное, что я бы добавил: Я спросил автора о том, что если вы тестируете небольшую цель, может показаться, что вы не получите приличного инкремента, если сделаете это сразу, поскольку в инкрементальном режиме есть значительные накладные расходы. Однако, как только вы реализуете его для более крупных резервных копий, он будет работать отлично.

Вместо резервного копирования в мою отдельную учетную запись хранения Azure, подключенную через SMB,Сделал второй такой же сервер и подключил через nfs. Он намного более стабилен, и нет различий в файловых системах, которые могут что-то испортить. Я настраиваю сценарий, который будет архивировать каждую резервную копию, а затем копировать ее в контейнер хранилища Azure после завершения каждой резервной копии. Это экономит время обработки и энергию на производственном сервере, выполняя zip на сервере резервного копирования. Надеюсь, это кому-то поможет.

0
ответ дан 4 December 2019 в 04:51

Теги

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