Синхронизация папок windows linux

ТОП 5: Программы для синхронизации

Содержание

Автор — Андрей Мин (Andrew Min)

Ubuntu One

Ubuntu One — один из новых продуктов Canonical. По смыслу и возможностям он похож на сервис хранения данных в Apple MobileMe. Просто перетащите нужный вам каталог или файл в каталог Ubuntu One, и они будут «автоматически» синхронизи-рованы. Ubuntu One поддерживает объём данных до 2 Гбайт (или до 50 Гбайт за $10 в месяц). К недостаткам стоит отнести тот факт, что ваши данные будут храниться на серверах Ubuntu.

Для установки Ubuntu One вам нужен пакет «ubuntuone-client».

Dropbox

Dropbox — это мощный кроссплатформенный сервис синхро-низации данных. Будучи функционально схожим с Ubuntu One, более зрелый Dropbox может похвастаться некоторыми серьёз-ными отличиями, такими как поддержка симлинков, больше возможностей по хранению данных и гораздо более удобный веб-интерфейс. Кроме того, это кроссплатформенный сервис (поддерживаются Windows, OS X и даже iPhone), и к нему есть множество расширяющих функционал модулей. Так же как и Ubuntu One, он использует промежуточные узлы для синхро-низации, то есть все ваши данные оседают на сервере Dropbox.

Для установки Dropbox скачайте пакет с https://www.dropbox.com/install

Grsync

Grsync — это основанный GTK+ графический интерфейс для известной утилиты rsync. Он поддер-живает сохранение сессий, большинст-во функций rsync (удаление, подроб-ный вывод, игнори-рование существу-ющих элементов, обновление и т.д.) и выполнение команд до и после работы rsync. Чтобы навер-няка избежать удаления крити-ческих данных, можно запустить утилиту в режиме симуляции. К сожа-лению, синхрониза-ция через SSH не работает без дополнительной настройки, но следующие инструкции помогут решить эту проблему: http://url.fullcirclemagazine.org/118bb3.

Для установки Grsync вам нужен пакет «grsync» из репозитория «universe».

Unison

Для установки Unison вам нужен пакет «unison» из репозитория «universe».

Conduit

Conduit считается одной из лучших программ для синхрониза-ции данных. Это созданный в рамках Gnome проект для синхронизации всего со всем. Например, ваших фотографий и альбомов Facebook, заметок Tomboy и Backpack, каталогов с каталогами. Также поддерживается синхронизация с другими компьютерами и внешними устройствами, такими как iPod или жёсткий диск. К интерфейсу Conduit нужно привыкнуть (он немного странный и не похож ни на что из виденного мной раньше), но потом вы ощутите всю невероятную мощь этой программы.

Для установки Conduit вам нужен пакет «conduit» из репозитория «universe».

Использование Rsync для синхронизации локального и удаленного каталогов на VPS

Вступление

Rsync расшифровывается как «remote sync» (удаленная синхронизация) и является инструментом удаленной синхронизации локального и удаленного файлов. Он использует алгоритм, который минимизирует объем копируемых данных при помощи перемещения только тех частей файлов, которые были изменены.

Данное руководство описывает основное использование этой мощной утилиты. В примерах был использован сервер Ubuntu 12.04, но можно использовать любой современный дистрибутив Linux.

Что такое Rsync?

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

Данное руководство в основном ссылается на rsync как на утилиту, а не на протокол.

Благодаря вездесущности данной утилиты на Linux и Unix-подобных системах и ее популярности как инструмента для сценариев системы, она включена в большинство дистрибутивов Linux по умолчанию.

Основной синтаксис

Основной синтаксис Rsync очень прост, его функционирование похоже на SSH, SCP и СР.

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

mkdir dir1
mkdir dir2
touch dir1/file

Это создаст на сервере каталог под названием dir1, содержащий 100 пустых файлов.

ls dir1
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99

Читайте также:  Uubyte iso editor mac os key

Также был создан пустой каталог dir2.

Чтобы синхронизировать содержимое каталогов dir1 to dir2 на одной системе, введите:

rsync -r dir1/ dir2

Флаг «-r» значит «рекурсивный», что необходимо для синхронизации каталогов.

Вместо него можно использовать флаг «-а»:

rsync -a dir1/ dir2

«-a» является комбинированным флагом.

Он означает «архив» и синхронизирует рекурсивно, сохраняя символьные ссылки, специальные файлы и файлы устройств, время изменения, группу, владельца и разрешения.

Он удобнее и потому используется чаще, чем «-r».

Важное примечание

В конце первого аргумента вышеприведенных команд используется конечная косая, или слеш (/):

rsync -a dir1/ dir2

Слеш необходим для обозначения «содержимого dir1».

Альтернативный вариант без использования конечной косой, поместит dir1, включая каталог, в dir2. Это создало бы иерархию, которая выглядит так:

Всегда проверяйте аргументы дважды перед выполнением команды Rsync.

Rsync позволяет это сделать при помощи команд -n или –dry-run. Флаг -v (что значит «подробно») также необходим для получения адекватного результата:

rsync -anv dir1/ dir2
sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .

Сравните данный результат с результатом, выведенным при снятии слеша:

rsync -anv dir1 dir2
sending incremental file list
dir1/
dir1/file1
dir1/file10
dir1/file100
dir1/file11
dir1/file12
dir1/file13
dir1/file14
dir1/file15
dir1/file16
dir1/file17
dir1/file18
. . .

Здесь можно увидеть, что сам каталог был перенесен.

Использование Rsync для синхронизации с удаленной системой

Синхронизация с удаленной системой проста, если есть SSH-доступ к удаленному компьютеру и на обеих системах установлена Rsync. Если вам нужно настроить ключи SSH, нажмите здесь.

Установив и проверив доступ SSH между двумя машинами, можно синхронизировать папку dir1 с удаленным компьютером при помощи следующего синтаксиса (обратите внимание, что в данном случае нужно передать непосредственно саму папку, поэтому косую черту следует опустить):

Данная процедура называется «push», так как она «толкает» каталог из локальной системы на удаленную.

Противоположная ей операция зовется «извлечением» («pull»). Она используется для синхронизации удаленного каталога с локальной системой. Если бы dir1 находился не на локальной, а на удаленной системе, синтаксис выглядел бы так:

rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine

Как в «ср» и подобных инструментах, первый аргумент всегда указывает на источник, а второй – на назначение.

Полезные опции Rsync

Rsync предоставляет множество команд для изменения стандартного поведения утилиты. Некоторые из наиболее необходимых флагов уже рассматривались.

При передаче еще не сжатых файлов, таких как текстовые файлы, можно уменьшить сетевой трафик, сжимая файлы при помощи параметра -z:

rsync -az source destination

Флаг «-P» также очень полезен. Он совмещает флаги «–progress» и «–partial». Первый выводит индикатор выполнения передачи, а второй позволяет возобновить прерванную передачу:

rsync -azP source destination
sending incremental file list
./
file1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101)
file100
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=97/101)
file11
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=96/101)
. . .

Если запустить команду снова, будет выведен более короткий результат, потому что никакие изменения не были внесены.

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

rsync -azP source destination
sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00

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

touch dir1/file<1..10>
rsync -azP source destination
sending incremental file list
file1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101)
file2
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=87/101)
file3
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=76/101)
. . .

По умолчанию, Rsync ничего не удаляет из каталога назначения. Следовательно, необходимо удалить файлы из каталога назначения, если они удаляются из исходного каталога, чтобы сохранить полную синхронизацию каталогов.

Такое поведение можно изменить с помощью флага «–delete». Прежде чем применять данный флаг, используйте команду «–dry-run» и проведите тестирование, чтобы предотвратить потерю данных.

rsync -a —delete source destination

При необходимости исключить некоторые файлы или каталоги, расположенные в синхронизируемом каталоге, можно внести их в разделенный запятыми список при помощи команды «–exclude=»:

rsync -a —exclude=pattern_to_exclude source destination

Если шаблон исключений был определен, при помощи команды «–include=» исключение можно снять, установив другой шаблон:

rsync -a —exclude=pattern_to_exclude —include=pattern_to_include source destination

Выводы

Rsync может упростить передачу файлов по сетевым соединениям и повысить устойчивость локальной синхронизации каталогов. Гибкость данной утилиты делает ее хорошим инструментом для выполнения различных операций на уровне файлов.

Читайте также:  Как создать еще один том жесткого диска windows 10

Владение Rsync позволяет проектировать сложные операции резервного копирования, а также получить многоуровневый контроль над тем, что и как передается.

Синхронизация данных между ПК с Windows и Linux через интернет

Проблема такова: есть два компьютера, достаточно далеко друг от друга, на одном Windows, на другом Kubuntu. Необходимо забрать с ПК с Windows около 100 гигабайт файлов. Чем это сделать? Пробовал Bittorrent Sync, но он платный, linux-версия консольная непригодна к использованию юзером левела «юзер», версия с GUI устарела и ссылки с windows-версии не жрёт. Выдрал код из ссылки, вставил в GUI-версию — не качает.

Больше ничего подоходящего не нашёл. Есть ещё варианты?

P.S. Однако же, долго меня тут небыло 😉 Как чо, что нового? Скоро вендекапец?

собственное облако, ftp, например

rsync под Cygwin

Собственное или любое облако — решение хорошее, но платное, например Dropbox’у надо заплатить 10 баксов за 1Тб. Это самый дешёвый вариант из платных. Но неужто нет свободных решений?

А связать их как, у обоих ПК серые IP же.

У меня в закладках syncthing, но я его не пробовал и только что увидел, что оно на go.

OwnCloud — свободное бесплатное решение.

FTP, SFTP. Последний поднять особо просто, но для вантуза понадобится клиента поставить.

Поднимать вебсервер с овнклаудом только ради разового переброса?
А не треснет спопывалка?

Rsync: копирование и синхронизация файлов с удаленным сервером

Утилиту Rsync можно использовать для копирования и синхронизации файлов и папок с локального сервера Linux на удаленный и наоборот. Rsync позволяет копировать ваши данные между серверами внутри защищенного SSH соединения. Так же, rsync, поддерживает сжатие данных на лету, что повышает производительность системы.

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

В данной статье мы рассмотрим варианты использования rsync для синхронизации и копирования каталогов и файлов, и приведем примеры его расширенных настроек.

Установка и основные параметр rsync

Установка rsync не отличается от установки, любого другого пакета. В CentOS пакет rsync присутствует в базовом репозитории и устанавливается через yum (или dnf в CentOS 8):

# yum install rsync -y

Синтаксис команды выглядит следующим образом:

# rsync опции источник приемник

В качестве источника и приемника можно указать локальную или удаленную директорию на другом сервере.

  • -v – вывести подробную информацию о процессе
  • -c – проверка контрольных сумм файлов
  • -q – минимальная информация
  • -a – режим архивирования
  • -R – относительные пути
  • -y – не перезаписывать более новые файлы
  • -b – создание резервной копии
  • -l – копировать симлинки
  • -L – копировать содержимое ссылок
  • -H – копировать жесткие ссылки
  • -g – сохранять группу
  • -p – сохранять права для файлов
  • -t – сохранять время модификаций
  • -x – работать только в этой ФС
  • -e – использовать другой транспортный протокол (например, ssh)
  • -z – сжимать файлы перед передачей
  • —delete – удалять файлы которых нет в источнике
  • —exclude – исключить файлы
  • —recursive – перебирать директории рекурсивно
  • —no-recursive – отключить рекурсию
  • —progress – выводить прогресс передачи файлов
  • —stat – показать статистику передачи
  • —max-size – максимальный размер файла для передачи
  • —bwlimit — ограничение скорости для передачи файлов
  • —version – версия утилиты

Rsync: локальное копирование/синхронизация каталогов

Rsync можно использовать для копирования файлов между локальными директориями сервера. Если вам нужно скопировать файлы из одной директории в другую, выполните команду:

# rsync /var/www/html/package.zip /var/www/tmp/

В этом случае файл package.zip был просто скопирован в директорию /var/www/tmp/.

Можно добавить несколько опций для выполнения копирования. Например, чтобы перед выполнением копирования предварительно сжать файл, вывести подробную информацию и прогресс копирования файла, выполните:

# rsync -vz —progress /var/www/html/package.zip /var/www/tmp/

Вы можете использовать rsync для синхронизации содержимого локальных каталогов. Например, rsync удобно использовать, когда вам требуется скопировать файлы из рабочей директории, на хранилище, которое примонтировано к какому-то разделу. Несколько примеров команд:

# rsync -zvr /var/www/site /backup/

Мы скопировали директорию /var/www/site в директорию для резервных копий, опция -r позволила рекурсивно скопировать все вложенные директории и файлы.

Чтобы сохранить все атрибуты файлов при копировании, например, дату изменения и дату создания файлов, добавьте ключ -a:

Читайте также:  Файл подкачки для 4 гб озу x64 windows 10 ноутбук

# rsync -zvra /var/www/site /backup/

Если вы хотите скопировать только измененные файлы, добавьте опцию -c:

# rsync -zvrac /var/www/site /backup/

Я изменил только один файл и запустил команду. В результате в целевую директорию, был скопирован только измененный файл.

Очень удобно использовать такую опцию, если файлы меняются не часто. Таким образом вы экономите время на копирование/синхронизацию директории.

Чтобы не захламлять директорию для бэкапов, можно добавить опцию —delete, это позволит сравнить файлы с источником и в случае присутствия файла в целевой директории и отсутствие его в исходной директории, удалить его автоматически. Но призываю использовать данную опцию с осторожностью, так как если вы настроите копирование директории по крону, в случае сбоя или вмешательства из вне в рабочую директорию, с последующим удалением рабочих файлов, у вас затрется информация и в бэкапах, что не позволит вам восстановить ваши данные. Пример:

# rsync -zvrac —delete /var/www/site /backup/

Rsync: настройка синхронизации с удаленным сервером

Чаще всего копирование/синхронизация rsync с удаленным сервером используется для резервного копирования или синхронизации конфигурации нод кластера. Можно выполнять автоматическую синхронизацию данных с рабочего сервера на резервный, и в случае проблем на продуктивном севере быстро все перевести на резервный. Это довольно удобный и простой в настройке вариант.

В современных версиях rsync протокол SSH используется для передачи файлов по-умолчанию. Однако вы можете использовать и демон rsyncd. Для этого клиент rsync должен быть установлен на удаленном компьютере, и его демон добавлен в автозагрузку:

# systemctl enable rsyncd

Конфигурационный файл rsync — /etc/rsyncd.conf. В этом файле можно настроить параметры rsync и настройки для синхронизации для разных ресурсов.

Для синхронизации через демона rsync адрес удаленного сервера указывается так rsync://. Например:

# rsync -av /var/www/site/package.zip rsync://192.168.1.32/backup

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

# rsync -az /var/www/site/package.zip root@IP:/backup/

Где IP, это адрес удаленного сервера. После запуска команды, удаленный сервер запросит пароль пользователя (если включена авторизация по паролю). Для автоматической авотризации нужно настроить SSH ключи.

Скопируем директорию с локального сервера на удаленный:

# rsync -zvra /var/www/site root@IP:/backup/

То есть, все тоже самое, что и с локальными директориями, только мы указываем адрес удаленного сервера.

Так же вы можете синхронизировать файлы и с удаленного сервера на локальный, команда для этого немного изменится:

# rsync -zvra root@IP:/backup/ /backup

Для принудительного использования SSH протокола для копирования файлов, укажите это в вашей команде (для выбора транспортного протокола копирования файлов используется опция –e):

# rsync -zvrae ssh root@IP:/backup/ /backup

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

# rsync -zvrae «ssh -p 2222» root@IP:/backup/ /backup

Другие примеры использования rsync

Если в рамках сессии синхронизации вы передаете много информации и важно ограничить скорость передачи, задайте это дополнительной опцией –bwlimit (указывается скорость в КБ/с):

# rsync -zvra —bwlimit=100 /var/www/site root@IP:/backup/

При передаче файлов на удаленный сервер, вы можете ограничить максимальный размер файлов, которые нужно скопировать. Например, вы хотите скопировать все файлы, кроме файлов размером более 1 Мб:

# rsync -zvra —max-size=’1m’ /var/www/site root@IP:/backup/

Если у вас на сервере нужна односторонняя синхронизация и после переноса файлов на удаленный сервер нужно удалить файлы с исходного сервера, воспользуйтесь опцией —-remove-source-files:

# rsync -zvra —remove-source-files —progress /var/www/site/package.zip root@IP:/backup/

После выполнения команды, файл был скопирован на удаленный сервер и удален на источнике:

Так же очень удобный опции —include и —exclude, с помощью этих опций, можно делать исключения по копированию директорий или файлов:

# rsync -zvra —exclude=administrator/ /var/www/site root@IP:/backup/

В данном случае мы исключили директорию “administrator” при копировании на удаленный сервер.

# rsync -zvra —include=’*.php’ —exclude=’*’ /var/www/site/administrator/ root@IP:/backup/

Добавлением опции —include мы смогли задать фильтр по файлам, скопировали только файлы с расширением php.

Резервное копирование в Linux с помощью rsync

В своей рабое я часть использую rsync для автоматических задач резервного копирования в Linux. Можно написать простые bash скрипты или просто добавить команду rsync в cron и выполнять по расписанию.

Например, можно добавить в cron команду:

01 30 * * * rsync -zvra root@IP:/backup/ /backup

В резульатате каждый день в 1-30 ночи, будет выполняться синхронизация каталогов локального и удаленного серверов.

Стоит учесть, что для выполнения команды rsync на удаленном сервер через cron, желательно настроить авторизацию серверов по SSH ключу. Примеры скриптов для бэкапа, мы приводили в статье «Скрипты для бэкапа файлов из Linux в облако», там как раз используется rsync для копирования файлов в подключенные облачные хранилища.

Оцените статью