Como no desea un archivo combinado, recorra cada archivo y comprímalo en su propio archivo de copia de seguridad:
for file in *.qcow2
do
gzip -c "$file" > /backup/"$file".backup.gz
done
La opción -c
dice enviar los resultados comprimidos a stdout, que redirigimos al nombre de archivo que preferimos.
Трудно сказать точно, в чем может быть проблема, но есть несколько идей, которые вы можете попробовать:
Поскольку состояние D
представляет собой непрерывный сон, что, скорее всего, вызвано операциями ввода-вывода, я предполагаю, что rsync
ожидает ввода-вывода в файле, который по какой-то причине недоступен. EFS и EBS являются удаленными файловыми системами. У меня была аналогичная проблема с общим ресурсом NFS. Чтобы исследовать проблему, вы можете начать выполнять трассировку системного вызова для вашей команды rsync
. Вам нужно strace
для этого (, возможно, вам нужно сначала установить его ). Затем попробуйте следующую команду:
strace -eopen -ostrace.log rsync...
-eopen
будет отслеживать только open()
системные вызовы -ofile
записывает вывод в файл с именемfile
Теперь подождите, пока процесс остановится в состоянии D
. Пока процесс заблокирован, вы можете проверить файл strace.log
. Содержимое может выглядеть как
$ tail -f strace.log
[...]
open("...", O_RDONLY|O_CLOEXEC) = 3
open("...", O_RDONLY)
open("/path/to/suspect_file", O_RDONLY)
Последняя запись в журнале-/path/to/suspect_file
в приведенном выше примере -— это файл, в котором rsync
блокируется в непрерывном спящем режиме. Теперь вы можете исключить этот файл из rsync или проверить, почему он вызывает блокировку (, или попытаться скопировать его вручную ).
BTW :Программа, копирующая большое количество файлов, большую часть времени будет находиться в непрерывном спящем режиме. Это означает, что программа большую часть времени ожидает базовой файловой системы (, что очень медленно по сравнению с циклами процессора ).