Синхронизация файлов: различия между версиями
Илья Н. (обсуждение | вклад) мНет описания правки |
ЕвгенийИТ (обсуждение | вклад) м (→Rsync) |
||
(не показаны 3 промежуточные версии 1 участника) | |||
Строка 1: | Строка 1: | ||
== Синхронизация локальных файлов и каталогов == | == Синхронизация локальных файлов и каталогов == | ||
=== Rsync === | === Rsync === | ||
Строка 20: | Строка 19: | ||
$ su - | $ su - | ||
# rsync -avh --del --progress --exclude= | # rsync -avh --del --progress --exclude='.*' /home/<Пользователь_1> /home/<Пользователь_2> /run/media/<Пользователь_1>/<Имя_USB_HDD>/backup | ||
В результате ее выполнения каталоги <code>/home/<Пользователь_1></code> и <code>/home/<Пользователь_2></code>, вместе со всем их содержимым, за исключением скрытых файлов и каталогов, рекурсивно копируются в каталог <code>/run/media/<Пользователь_1>/<Имя_USB_HDD>/backup</code>. В Альт Рабочая станция К, при подключении и монтировании внешнего жесткого диска, его содержимое становится доступным по пути <code>/run/media/<Пользователь_1>/<Имя_USB_HDD>/</code>. В данном примере на внешнем жестком диске создается каталог <code>backup</code>, где и будет находиться резервная копия. | В результате ее выполнения каталоги <code>/home/<Пользователь_1></code> и <code>/home/<Пользователь_2></code>, вместе со всем их содержимым, за исключением скрытых файлов и каталогов, рекурсивно копируются в каталог <code>/run/media/<Пользователь_1>/<Имя_USB_HDD>/backup</code>. В Альт Рабочая станция К, при подключении и монтировании внешнего жесткого диска, его содержимое становится доступным по пути <code>/run/media/<Пользователь_1>/<Имя_USB_HDD>/</code>. В данном примере на внешнем жестком диске создается каталог <code>backup</code>, где и будет находиться резервная копия. | ||
Строка 26: | Строка 25: | ||
Дополнительные опции имеют следующие значения: | Дополнительные опции имеют следующие значения: | ||
;--exclude= | ;--exclude='.*' :исключить из резервной копии скрытые файлы и каталоги. Можно рекомендовать эту опцию, если резервное копирование скрытых файлов и каталогов занимает значительное время. | ||
{{ | ==== Проблемы с кодировками в лог файле ==== | ||
Иногда, при копировании файлов возникают ошибки и при перенаправлении ввода '2> LogFile.log', | |||
текст ошибок записывается в файл в кириллической кодировке в формате '\#320\#220\...' | |||
Пример: <code>rsync -rlptDvh --chmod 770 /mnt/doc/SERVER-1S/ /mnt/1s/ 2> ~/rsync_err</code> | |||
Чтобы просмотреть файл rsync_err в читабельном формате, необходимо текст файла пропустить через данный конвейер команд: | |||
<code>echo "\#320\#255\#320\#272\#320\#276" | sed "s/#//g" | xargs -0 printf</code> | |||
или | |||
<code>cat rsync_err | sed "s/#//g" | xargs -0 printf</code> | |||
{{Примечание|Резервное копирование возможно как на раздел с файловой системой Linux, так и на том FAT32/NTFS.}} | |||
[[Категория:HOWTO]] | [[Категория:HOWTO]] |
Текущая версия от 11:51, 13 октября 2023
Синхронизация локальных файлов и каталогов
Rsync
Согласно описанию, rsync
- быстрый, универсальный инструмент для удаленного (и локального) копирования файлов. Для резервного копирования и синхронизации нескольких каталогов с файлами, можно воспользоваться следующей командой (от имени обычного пользователя):
$ rsync -avh --del --progress ./dir1 ./dir2 ./dir3 ./backup
В результате ее выполнения каталоги ./dir1
./dir2
и ./dir3
, вместе со всем их содержимым, рекурсивно копируются в каталог ./backup
. Если файлы не были изменены, они будут пропущены. При этом важно в конце имени каждого каталога-источника ./dir1
./dir2
и ./dir3
не ставить слеш /
для того, чтобы и сами эти каталоги были включены в резервную копию, а не только их содержимое. В конце имени каталога-приемника ставить слеш /
можно.
Дополнительные опции имеют следующие значения:
- -a
- опция для архивирования, эквивалентна -rlptgoD. Согласно описанию, это быстрый способ сказать, что вы хотите рекурсию и хотите сохранить почти все;
- -v
- увеличить количество выводимой на экран информации о ходе процесса;
- -h
- выводить числа в удобочитаемом формате;
- --del
- удалять файлы в каталоге-приемнике, если они были удалены в каталоге-источнике;
- --progress
- показывать прогресс во время передачи.
ПРИМЕР: Резервное копирование домашних каталогов нескольких пользователей компьютера на внешний жесткий диск
Для этого можно выполнить команду (понадобятся права пользователя root):
$ su - # rsync -avh --del --progress --exclude='.*' /home/<Пользователь_1> /home/<Пользователь_2> /run/media/<Пользователь_1>/<Имя_USB_HDD>/backup
В результате ее выполнения каталоги /home/<Пользователь_1>
и /home/<Пользователь_2>
, вместе со всем их содержимым, за исключением скрытых файлов и каталогов, рекурсивно копируются в каталог /run/media/<Пользователь_1>/<Имя_USB_HDD>/backup
. В Альт Рабочая станция К, при подключении и монтировании внешнего жесткого диска, его содержимое становится доступным по пути /run/media/<Пользователь_1>/<Имя_USB_HDD>/
. В данном примере на внешнем жестком диске создается каталог backup
, где и будет находиться резервная копия.
Дополнительные опции имеют следующие значения:
- --exclude='.*'
- исключить из резервной копии скрытые файлы и каталоги. Можно рекомендовать эту опцию, если резервное копирование скрытых файлов и каталогов занимает значительное время.
Проблемы с кодировками в лог файле
Иногда, при копировании файлов возникают ошибки и при перенаправлении ввода '2> LogFile.log', текст ошибок записывается в файл в кириллической кодировке в формате '\#320\#220\...'
Пример: rsync -rlptDvh --chmod 770 /mnt/doc/SERVER-1S/ /mnt/1s/ 2> ~/rsync_err
Чтобы просмотреть файл rsync_err в читабельном формате, необходимо текст файла пропустить через данный конвейер команд:
echo "\#320\#255\#320\#272\#320\#276" | sed "s/#//g" | xargs -0 printf
или
cat rsync_err | sed "s/#//g" | xargs -0 printf