Как сжимать и разделять резервную копию на удаленном ftp-сервере, избегая пустого пространства и используя dd

Дело в следующем:

у нас есть два сервера, удаленный сервер с ТОЛЬКО FTP-доступом и локальный сервер linux, где мы должны настроить сценарий для резервного копирования всей системы с помощью команды dd. Резервная копия должна быть сохранена на удаленном сервере.

Здесь мой сценарий

CT = $ (fdisk -l | awk '$ 1 == "/ dev / sda1" {print $ 3}') dd if = / dev / sda1 bs = 512 count = $ CT | gzip | / mnt / remoteftp / ПУТЬ / sda _ $ (uname -r) .img.gz

Скрипт работает, но у меня проблема, потому что скрипт должен избегать пустого места, но результат другой, на самом деле

root@linuxserver:~/# df -h
Filesystem                           Size  Used Avail Use% Mounted on
udev                                 961M     0  961M   0% /dev
tmpfs                                195M  3,1M  192M   2% /run
/dev/sda1                             20G  2,1G   18G  11% /
tmpfs                                973M     0  973M   0% /dev/shm
tmpfs                                5,0M     0  5,0M   0% /run/lock
tmpfs                                973M     0  973M   0% /sys/fs/cgroup
/dev/sda15                           105M  3,6M  101M   4% /boot/efi
tmpfs                                195M     0  195M   0% /run/user/1001
curlftpfs#ftp://ftp.remotesrv.com/   954G     0  954G   0% /mnt/remoteftp

На диске / dev / sda1 назначено только 2,1 ГБ, поэтому я ожидаю 3 файла, когда мой сценарий finish:

1 файл размером 1 ГБ, другой файл размером 1 ГБ и последний файл размером 100 МБ.

Вместо этого у меня

root@linuxserver:~/batch# ls -lah /mnt/remoteftp/
total 17G
drwxr-xr-x 2 ubuntu ubuntu  4,0K nov 20  2019 .
drwxr-xr-x 7 ubuntu ubuntu  4,0K nov 20 12:02 ..
-rwxr-xr-x 0 ubuntu ubuntu   13G nov 20  2019 .fuse_hidden0000007900000001
-rwxr-xr-x 1 ubuntu ubuntu 1000M nov 20  2019 sda_4.15.0-70-generic.img.gzaa
-rwxr-xr-x 1 ubuntu ubuntu 1000M nov 20  2019 sda_4.15.0-70-generic.img.gzab
-rwxr-xr-x 1 ubuntu ubuntu 1000M nov 20  2019 sda_4.15.0-70-generic.img.gzac
-rwxr-xr-x 1 ubuntu ubuntu 1000M nov 20  2019 sda_4.15.0-70-generic.img.gzad
-rwxr-xr-x 1 ubuntu ubuntu  326M nov 20  2019 sda_4.15.0-70-generic.img.gzae
root@linuxserver:~/batch# ls -lah /mnt/remoteftp/
total 17G
drwxr-xr-x 2 ubuntu ubuntu  4,0K nov 20  2019 .
drwxr-xr-x 7 ubuntu ubuntu  4,0K nov 20 12:02 ..
-rwxr-xr-x 0 ubuntu ubuntu   13G nov 20  2019 .fuse_hidden0000007900000001
-rwxr-xr-x 1 ubuntu ubuntu 1000M nov 20  2019 sda_4.15.0-70-generic.img.gzaa
-rwxr-xr-x 1 ubuntu ubuntu 1000M nov 20  2019 sda_4.15.0-70-generic.img.gzab
-rwxr-xr-x 1 ubuntu ubuntu 1000M nov 20  2019 sda_4.15.0-70-generic.img.gzac
-rwxr-xr-x 1 ubuntu ubuntu 1000M nov 20  2019 sda_4.15.0-70-generic.img.gzad
-rwxr-xr-x 1 ubuntu ubuntu  374M nov 20  2019 sda_4.15.0-70-generic.img.gzae
root@linuxserver:~/batch# 

Почему такое поведение?

0
задан 20 November 2019 в 16:17
1 ответ

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

, Если Вы копируете файл на 10 ГБ на сервере и удаляете его сразу же, Вы только удалите ссылки на него в файловой системе. Сами данные все еще будут там. Так, при копировании раздела впоследствии с dd Вы скопируете этот 'фантомный' файл также.

Для получения результата Вы ожидаете, необходимо было бы на самом деле вытереть все неиспользуемое место на диске путем перезаписи его с другими данными, предпочтительно что-то, что легко сжато gzip. Обычно Вы делаете это путем перезаписи всего с обнуляет.

После этого, результат должен быть тем, что Вы ожидаете.

<час>

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

2
ответ дан 4 December 2019 в 13:18

Теги

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