Синхронизация файлов: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
 
Строка 1: Строка 1:
__NOTOC__
== Синхронизация локальных файлов и каталогов ==
== Синхронизация локальных файлов и каталогов ==
=== Rsync ===
=== Rsync ===
Согласно описанию, <code>rsync</code> - быстрый, универсальный инструмент для удаленного (и локального) копирования файлов. Для резервного копирования и синхронизации нескольких каталогов с файлами, можно воспользоваться следующей командой (от имени обычного пользователя):
'''rsync''' — быстрый, универсальный инструмент для удаленного (и локального) копирования файлов. Для резервного копирования и синхронизации нескольких каталогов с файлами можно воспользоваться следующей командой:


  $ rsync -avh --del --progress ./dir1 ./dir2 ./dir3 ./backup
rsync -avh --del --progress ./dir1 ./dir2 ./dir3 ./backup
 
{{Note|Чтобы сам резервируемый каталог, а не только его содержимое, был включен в резервную копию, не ставьте '''слеш''' <code>/</code> в конце имени этого каталога.}}
В результате ее выполнения каталоги <code>./dir1</code> <code>./dir2</code> и <code>./dir3</code>, вместе со всем их содержимым, рекурсивно копируются в каталог <code>./backup</code>. Если файлы не были изменены, они будут пропущены. При этом важно в конце имени каждого каталога-источника <code>./dir1</code> <code>./dir2</code> и <code>./dir3</code> не ставить слеш <code>/</code> для того, чтобы и сами эти каталоги были включены в резервную копию, а не только их содержимое. В конце имени каталога-приемника ставить слеш <code>/</code> можно.
В результате выполнения команды каталоги {{path|./dir1}}, {{path|./dir2}} и {{path|./dir3}}, вместе со всем их содержимым, будут рекурсивно скопированы в каталог {{path|./backup}}. Если файлы уже есть в каталоге {{path|./backup}}, и не были изменены, они будут пропущены.


Дополнительные опции имеют следующие значения:
Дополнительные опции имеют следующие значения:


;-a :опция для архивирования, эквивалентна '''-rlptgoD'''. Согласно описанию, это быстрый способ сказать, что вы хотите рекурсию и хотите сохранить почти все;
;-a :опция для архивирования, эквивалентна '''-rlptgoD''', согласно описанию, это быстрый способ сказать, что вы хотите рекурсию и хотите сохранить почти все;
;-v :увеличить количество выводимой на экран информации о ходе процесса;
;-v :увеличить количество выводимой на экран информации о ходе процесса;
;-h :выводить числа в удобочитаемом формате;
;-h :выводить числа в удобочитаемом формате;
Строка 16: Строка 17:


==== ПРИМЕР: Резервное копирование домашних каталогов нескольких пользователей компьютера на внешний жесткий диск ====
==== ПРИМЕР: Резервное копирование домашних каталогов нескольких пользователей компьютера на внешний жесткий диск ====
Для этого можно выполнить команду (понадобятся права пользователя '''root'''):
Для резервного копирования данных в домашних каталогах нескольких пользователей выполните команду (понадобятся права '''root'''):


  $ su -  
su -
  # rsync -avh --del --progress --exclude='.*' /home/<Пользователь_1> /home/<Пользователь_2> /run/media/<Пользователь_1>/<Имя_USB_HDD>/backup
rsync -avh --del --progress --exclude='.*' /home/<Пользователь_1> /home/<Пользователь_2> /run/media/<Пользователь_1>/<Имя_USB_HDD>/backup
exit


В результате ее выполнения каталоги <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>, где и будет находиться резервная копия.
где {{path|/run/media/<Пользователь_1>/<Имя_USB_HDD>}} — предварительно смонтированный USB HDD или флеш-накопитель.  


Дополнительные опции имеют следующие значения:
Дополнительные опции имеют следующие значения:
Строка 27: Строка 29:
;--exclude='.*' :исключить из резервной копии скрытые файлы и каталоги. Можно рекомендовать эту опцию, если резервное копирование скрытых файлов и каталогов занимает значительное время.
;--exclude='.*' :исключить из резервной копии скрытые файлы и каталоги. Можно рекомендовать эту опцию, если резервное копирование скрытых файлов и каталогов занимает значительное время.


==== Проблемы с кодировками в лог файле ====
==Решение проблем==
Иногда, при копировании файлов возникают ошибки и при перенаправлении ввода '2> LogFile.log',
=== Проблемы с кодировками в лог-файле ===
текст ошибок записывается в файл в кириллической кодировке в формате '\#320\#220\...'
При использовании '''rsync''' и перенаправлении вывода ошибок в файл, кириллические символы в тексте ошибок могут быть записаны в формате <code>\#320\#220\...</code>.
 
Пример: <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>
rsync -rlptDvh --chmod 770 /mnt/doc/SERVER-1S/ /mnt/1s/ 2> ~/rsync_err


или
Чтобы просмотреть содержимое файла {{path|rsync_err}} в читаемом формате, можно пропустить его через данный конвейер команд:


<code>cat rsync_err | sed "s/#//g" | xargs -0 printf</code>
cat rsync_err | sed "s/#//g" | xargs -0 printf


{{Примечание|Резервное копирование возможно как на раздел с файловой системой Linux, так и на том FAT32/NTFS.}}
[[Категория:Пользователю]]
[[Категория:HOWTO]]
[[Категория:HOWTO]]

Текущая версия от 13:17, 12 февраля 2025

Синхронизация локальных файлов и каталогов

Rsync

rsync — быстрый, универсальный инструмент для удаленного (и локального) копирования файлов. Для резервного копирования и синхронизации нескольких каталогов с файлами можно воспользоваться следующей командой:

rsync -avh --del --progress ./dir1 ./dir2 ./dir3 ./backup
Примечание: Чтобы сам резервируемый каталог, а не только его содержимое, был включен в резервную копию, не ставьте слеш / в конце имени этого каталога.

В результате выполнения команды каталоги ./dir1, ./dir2 и ./dir3, вместе со всем их содержимым, будут рекурсивно скопированы в каталог ./backup. Если файлы уже есть в каталоге ./backup, и не были изменены, они будут пропущены.

Дополнительные опции имеют следующие значения:

-a
опция для архивирования, эквивалентна -rlptgoD, согласно описанию, это быстрый способ сказать, что вы хотите рекурсию и хотите сохранить почти все;
-v
увеличить количество выводимой на экран информации о ходе процесса;
-h
выводить числа в удобочитаемом формате;
--del
удалять файлы в каталоге-приемнике, если они были удалены в каталоге-источнике;
--progress
показывать прогресс во время передачи.

ПРИМЕР: Резервное копирование домашних каталогов нескольких пользователей компьютера на внешний жесткий диск

Для резервного копирования данных в домашних каталогах нескольких пользователей выполните команду (понадобятся права root):

su -
rsync -avh --del --progress --exclude='.*' /home/<Пользователь_1> /home/<Пользователь_2> /run/media/<Пользователь_1>/<Имя_USB_HDD>/backup
exit

где /run/media/<Пользователь_1>/<Имя_USB_HDD> — предварительно смонтированный USB HDD или флеш-накопитель.

Дополнительные опции имеют следующие значения:

--exclude='.*'
исключить из резервной копии скрытые файлы и каталоги. Можно рекомендовать эту опцию, если резервное копирование скрытых файлов и каталогов занимает значительное время.

Решение проблем

Проблемы с кодировками в лог-файле

При использовании rsync и перенаправлении вывода ошибок в файл, кириллические символы в тексте ошибок могут быть записаны в формате \#320\#220\....

Например:

rsync -rlptDvh --chmod 770 /mnt/doc/SERVER-1S/ /mnt/1s/ 2> ~/rsync_err

Чтобы просмотреть содержимое файла rsync_err в читаемом формате, можно пропустить его через данный конвейер команд:

cat rsync_err | sed "s/#//g" | xargs -0 printf