Как синхронизировать в обоих направлениях
Как синхронизировать в обоих направлениях?
Я хочу использовать rsync для синхронизации двух каталогов в обоих направлениях.
Я имею в виду синхронизацию в классическом смысле ( не так, как это подразумевается в руководствах по rsync):
Я хочу обновить каталоги в обоих направлениях , в зависимости от того, какой из них новее .
Можно ли это сделать с помощью rsync (предпочтительно для Linux) ?
Если нет, то какие еще существуют решения?
8 ответов
Просто запустите его дважды, используя «новый» режим (флаг -u или —update) плюс -t (для копирования времени изменения файла), -r (для рекурсивных папок) и -v (для подробного вывода, чтобы увидеть, что это такое. делает):
Это не будет обрабатывать удаления, но я не уверен, что есть хорошее решение этой проблемы только с периодической синхронизацией.
Unison — это инструмент для синхронизации файлов для Unix и Windows. Он позволяет хранить две реплики набора файлов и каталогов на разных хостах (или разных дисках на одном и том же хосте), изменять их по отдельности и затем обновлять путем распространения изменений в каждой реплике на другую. .
Также обратите внимание, что он устойчив к сбоям:
Унисон устойчив к неудачам. Необходимо постоянно оставлять реплики и собственные частные структуры в разумном состоянии, даже в случае аварийного завершения или сбоев связи.
Вам нужно запустить rsync дважды, и я рекомендую запустить его с -au :
-a (a для архива) — это ярлык для -rlptgoD :
- -r Рекурсия в подкаталоги
- -l Также синхронизировать символические ссылки
- -p Также синхронизировать права доступа к файлам
- -t Также синхронизировать время изменения файла
- -g Также синхронизировать группы файлов
- -o Также синхронизировать владельца файла
- -D Также синхронизировать специальные (не обычные / мета) файлы
Обычно всякий раз, когда вы хотите создать идентичную копию один-к-одному с помощью rsync , вы всегда должны использовать -a , поскольку именно этого ожидает большинство пользователей, когда они говорят о » синхронизации «. Другие ответы здесь, похоже, упускают из виду, что иногда содержимое файла остается неизменным, но его владелец мог измениться или его права доступа могли измениться, и в этом случае rsync не будет синхронизировать файл, что может быть фатальным.
Но вам также требуется -u , поскольку он сообщает rsync полностью оставить в покое любой файл / папку, если они уже существуют в месте назначения и имеют более новую дату последнего изменения. Без -u rsync будет синхронизировать независимо от того, является ли файл / папка более новым или нет.
Обратите внимание, что это решение не может обрабатывать удаленные файлы. Обработка удалений затруднена, поскольку рассмотрим следующую ситуацию: файл был удален в источнике, теперь как rsync узнать, существовал ли этот файл когда-то и был ли он удален (в этом случае он должен быть удален в месте назначения также) или его никогда не существовало в источнике (в этом случае он должен быть скопирован из места назначения). Эти две ситуации выглядят идентично rsync , поэтому он не может знать, как правильно реагировать. Синхронизация наоборот не поможет, так как это может привести к той же ситуации: файл существует в источнике, но не в месте назначения. Почему? Он никогда не существовал в месте назначения или был удален? Оба случая выглядят идентично rsync .
Инструменты синхронизации, которые могут надежно синхронизировать удаленные файлы, обычно управляют журналом синхронизации обо всех прошлых операциях синхронизации. Если этот журнал показывает, что когда-то был файл и был синхронизирован, но теперь он отсутствует, очевидно, что он был удален. Если такого файла по журналу никогда не было, его необходимо синхронизировать. Сохраняя все записи журнала с отметками времени, даже возможно, что удаленный файл вернется и будет удален несколько раз, но инструмент синхронизации всегда будет знать, что делать, и результат всегда будет правильным. rsync не имеет такого журнала, он полагается только на текущее состояние файла двух сторон операции.
Однако вы можете создать команду синхронизации, используя rsync и немного сценариев оболочки POSIX, которые уже очень близки к инструменту синхронизации, как описано выше. Поскольку мне самому был нужен такой инструмент, вот ответ на Stackoverflow, который проведет вас через создание такого скрипта.
Это приведет к тому, что вторая синхронизация произойдет сразу после завершения первой. В случае, если структура каталогов огромна, это сэкономит время, так как не нужно сидеть перед компьютером. Если структура огромна, удалите подробности и прогресс.
Используйте rsync <OPTIONS> [hostname:]source-dir [hostname:]dest-dir
Синхронизирует xxx-файлы с разными-материалами / xxx-файлами. Если разных-файлов / xxx-файлов не существует, он их создаст, то есть скопирует.
-pogtEtv — просто набор параметров для сохранения метаданных файла, плюс v — подробный и r — рекурсивный
—progress — показывать прогресс синхронизации в реальном времени — очень полезно, если вы копируете большие файлы
—bwlimit=2000 — устанавливает максимальную скорость копирования / синхронизации (bw = пропускная способность)
P.S. rsync критически важен, когда вы работаете по сети. В случае локальной машины вы можете использовать такие команды, как cp .
У меня был тот же вопрос, и в итоге я использовал git . Это может не соответствовать вашей ситуации, но если кто-то найдет эту тему и у вас возникнет такой же вопрос, вы можете подумать о системе контроля версий.
Я использую rsync с inotifywait . Когда вы изменяете любой файл, будет выполняться rsync .
Вам нужно запустить inotifywait на обоих хостах. Посмотрите пример inotifywait
Вам нужен Rclone. Rclone («rsync для облачного хранилища») — это программа командной строки Linux для синхронизации файлов и каталогов с разными поставщиками облачных хранилищ (box, dropbox, ftp и т. Д.) И локальными файловыми системами. Rlone поддерживает только зеркальную синхронизацию.
Другое более графическое решение, которое включает синхронизацию в реальном времени, — это использование FreeFileSync, которое включает программу RealTimeSync. FreefileSync поддерживает двустороннюю двунаправленную синхронизацию, которая включает обработку удалений.
Копируем с RSync: основные примеры синхронизации файлов
RSync это быстрый и чрезвычайно универсальный инструмент для синхронизации (копирования) файлов. Его самое основное преимущество это передача только изменившиеся части файла, а не файла целиком, что несомненно отражается на скорости копирования/синхронизации. А если при копировании произойдет какой-то сбой, то достаточно перезапустить команду и копирование будет продолжено с того же места.
RSync может копировать файлы локально на компьютере, с локальной машины на удаленную (к примеру на сервер) и наоборот. Этот инструмент очень удобно использовать для создания резервных копий своих файлов, так как имеет большое обилие опций и экономно пользуется ресурсами системы.
Сам сервис работает на SSH протоколе по умолчанию, но может работать и на собственном протоколе rsyncd, но обо всем по порядку.
Установка
По умолчанию rsync есть не везде, поэтому если вы получили ошибку «bash: rsync: command not found» — значит его нужно установить (как на локальной, так и на удаленной машине):
Базовый синтаксис
Основные опции RSync
Ниже перечислены только основные опции, которые чаще всего помогали в работе. Я попытался разделить их на некоторые подгруппы для удобства их использования.
Базовые опции:
Работа с файлами:
Настройка синхронизации/подключения/передачи файлов:
Отображение/результат:
Опции полезные для создания инкрементальных резервных копий:
Теперь пройдемся по базовым примерам.
Как скопировать/синхронизировать файлы у себя на компьютере
Данная команда копирует файлы (т.е. содержимое) из каталога /home/user/Downloads/TEMP/files/ в каталог /home/user/Downloads/TEMP/copyfiles.
- если в конце пути до источника (каталога) нет слэша, то будет скопирован сам каталог (в примере выше это files).
- если слэш указан, то будет скопировано содержимое каталога (т.е. то, что внутри files, из примера выше)
В случае необходимости скопировать несколько каталогов и файлов за раз в каталог, которого еще не существует, можно выполнить эту команду:
Находясь в нужном каталоге, мы скопировали каталог 2021, файл logo.svg.png и еще один каталог copy2021 в несуществующий ранее каталог copydir.
Вот как это выглядит наглядно:
Получается это не плохая альтернатива cp 🙂
Как скопировать/синхронизировать с компьютера на удаленный сервер
Важно указывать полный путь на удаленном сервере, иначе rsync попытается скопировать каталог «2021» в корень удаленного сервера.
Еще важно указывать полный путь до удаленного сервера, так как, к примеру, копируя файл «file.txt» на сервер указав путь /home/user/somedir, каталог somedir не будет создан, вместо этого файл file.txt скопируется на сервер под именем somedir. Чтобы избежать этого используйте путь полный путь /home/user/somedir / .
Если мы хотим немного сжать файлы при передачи (к примеру у нас медленный интернет), можно использовать ключ -z:
Но важно понимать, что сжатие имеет смысл использовать там где это нужно, так как в новых версиях ssh уже использует сжатие передаваемых данных, тратить ресурсы CPU не стоит, особенно на слабых машинах или NAS серверах.
Как скопировать/синхронизировать с удаленного сервера на компьютер
В данном примере мы копируем файл filefromsrv в каталог, в котором находимся.
Как указать другой порт ssh и ключ?
С помощью опции -e (она же —rsh). Вот как скопировать файл с компьютера на сервер у которого не стандартный ssh порт:
А вот как можно указать ключ авторизации и порт:
Кстати, если мы настроим ssh алиас, то мы можем копировать файлы не указывая лишних ключей.
Я хочу видеть прогресс копирования/синхронизации
Стоит иметь в виду, что по умолчанию rsync копирует файлы без какого-либо вывода.
В примерах выше я использую ключ -v для того, чтобы видеть какие файлы были скопированы и получить некий отчет о проделанных действиях. Вот пример:
Если мы хотим видеть наиболее интересный вывод, то нам в этом поможет ключ —progress. Вот пример:
Некоторые могут советовать ключ -P, но имейте в виду, -P включает в себя ключ —partial и —progress одновременно (что в целом не так страшно).
Как ограничить скорость передачи файлов?
Нужно указать опцию —bwlimit=SPEED, где SPEED это скорость в Кбайт в секунду:
Полезно бывает на слабом интернете с большими файлами.
Как исключить некоторые файлы или включить определенный тип файлов?
В rsync можно создавать достаточно гибкие исключения, например, делая резервную копию домашней директории на linux мы не ходим копировать разный кеш или содержимое корзины. Вот пример, в котором я исключаю две директории:
Конечно можно указать одну директорию:
Еще мы можем исключить файлы с определенным расширением:
Саму опцию мы можем использовать несколько раз:
Для копирования определенного типа файлов (да и не только) мы можем использовать опцию —include. Используется она точно так же, как и exclude. Вот пример, в котором я загружаю на сервер только все файлы с расширением .sql:
Исключения с помощью .rsync-filter
Для более гибкой настройки копирования (в случае регулярного копирования это будет очень полезно) все исключения/включения можно оформить в файле .rsync-filter (это появилось в более поздних версиях rsync).
Попробую объяснить подробно на примере, как и что мы можем исключать (спасибо этому блогу за хорошее описание).
Допустим, у меня есть такой каталог (somedir), в котором я хочу исключить (красная стрелка) или оставить (зеленая стрелка) некоторые файлы/каталоги:
Ниже приведен один из примеров настройки исключений в файле .rsync-filter с комментариями:
Для того, чтобы rsync заметил файл .rsync-filter, достаточно указать опцию -F:
В итоге на сервер будут скопированы только эти файлы:
Кстати, если мы не хотим чтобы сам .rsync-filter не копировался, то -F нужно будет указать дважды
Другие полезные опции
—delete / —delete-after / —del (—delete_during)
Если мы делаем ежедневные резервные копии и не хотим засорять удаленный сервер лишними файлами (которых уже нет в источнике), то мы можем использовать опцию —delete:
В результате будет удален файл, которого больше нет в директории источника (в somedir):
По умолчанию, rsync сначала выполняет удаление файлов перед копированием для уверенности, что хватит свободного места на приемной стороне (т.е. использует по умолчанию —delete-before). Если мы хотим удалять файлы после копирования, используйте параметр —delete-after.
Если мы хотим хотим удалять файлы в процессе передачи, а не перед, то можно использовать опцию —del (—delete_during). Это поможет сэкономить немного ресурсов и времени.
Кстати, это не все «delete» параметры, которые есть, вот их полный список с кратким описанием:
А если вам по какой-то причине не нужно обновлять файлы на принимающем сервере, вместо опции —del.. можно использовать опцию —ignore-existing.
—no-perms —no-owner —no-group
Иногда нам может потребоваться не переносить атрибуты (права файлов, пользователя и группу пользователя). Для этого мы можем воспользоваться опциями —no-p —no-o —no-g (оно же —no-perms —no-owner —no-group):
Важно соблюдать порядок (особенности работы «—no-OPTION» в rsync).
—inplace
По умолчанию rsync, при копировании существующего файла создает его новую версию, а потом заменяет старый файл на новый. Это сделано для того, чтобы исходный файл не пострадал в случае каких-то перебоев. Данная опция позволяет изменить это поведение таким образом, чтобы rsync сразу начал перезапись старого файла. Опция полезна при копировании больший файлов на одном компьютере:
-W, —whole-file
Эта опция будет полезна, если мы копируем файлы с нагруженного или слабого сервера, так как она отключает дифференциальный алгоритм rsync’а и с ним весь файл передается как есть, целиком, не тратя время CPU на вычисления.
Что в итоге?
Я постарался описать наиболее частые примеры использования rsync, и сказу сразу: это только минимум того, что может эта утилита.
Если вы где-то нашли ошибку, или есть еще какие-то интересные способы использования rsync — пишите, я добавлю их в статью ;).
Синхронизация файлов в локальной сети в реальном времени
Дальше я привел список 30-ти сервисов для синхронизации данных между компьютерами и мобильными устройствами, чтобы вы всегда имели доступ к ним.
Сервисы разделены на три категории: с открытым исходным кодом, бесплатные сервисы и платные.
Замечу, что это сервисы синхронизации, а не резервного копирования данных. При изменении файла в одном месте программа изменит его и в другом.
Open Source Software
rsync — Для тех, кто умеет пользоваться командной строкой. Для правильной работы rsync требует ручной настройки.
Unison — Разработан в the University of Pennslyvania и очень похож на rsync. Работает на различных платформах, включая Windows, Mac, Linux и
Solaris.
WinSCP — В основном FTP и SFTP клиент для Windows, однако он также
может выполнять синхронизацию различных папок в частично автоматическом или полностью автоматическом режиме.
PowerFolder – Удобен для технически неграмотных людей. Синхронизация, резервное копирование, совместное использование и перенос файлов.
Directory Synchronize (DirSync) — Сервис с множеством опций для файлов и папок, подлежащих или не подлежащих синхронизации. Синхронизация с ПК по USB поддерживает PDA и т.п.
iFolder — Сервис, разработанный Novell в 2001 году, кросс-платформенный сервис, который может синхронизировать одну папку на нескольких компьютерах с разными операционными системами.
JFileSync — Можно использовать для синхронизации данных между двумя папками на одном компьютере, или между двумя компьютерами, или между компьютером и другим устройством хранения данных.
FullSync — Универсальный сервис синхронизации и резервного копирования. Настраивается и расширяется.
OpenSync — Можно использовать для синхронизации данных PIM, (контакты, календарь, задачи) между ПК и мобильным устройством.
Conduit — Для тех, кто использует GNOME, может синхронизировать файлы, фотографии, письма, контакты и т.д. с другим компьютером или
устройством.
Freeware Apps
SyncEXPERT — Очень простой инструмент синхронизации для Windows:
настольные компьютеры, ноутбуки, USB накопители и любые другие
устройства хранения информации.
Allway Sync — Программа для синхронизации с многоязычным интерфейсом.
SyncBack — Старые версии программы бесплатны. Резервное копирование и
синхронизация файлов поддерживает сжатие и шифрование.
BestSync — Синхронизация данных на сетевых дисках, FTP-серверах,
USB-устройствах и многое другое.
SyncMate — Может синхронизировать ваш MAC, например, с Pocket PC, имеет множество пунктов синхронизации: текстовые сообщения, документы, контакты, записи календаря и т.д.
FolderShare — Бесплатный инструмент синхронизации, который работает на Windows XP и Mac OS X. файл не может быть больше 2 Гб, а библиотека
файлов превышать 10000.
SyncToy — Является простым в использовании инструментом для синхронизации файлов и папок.
Windows Mobile Device Center — Заменяет ActiveSync, программа для
синхронизации на основе Windows CE.
Easy2Sync — Бесплатная версия позволяет синхронизировать один каталог между двумя компьютерами, не включая вложенных папок.
ViceVersa — Несколько способов синхронизации, возможна ручная
синхронизация.
Commercial Software
Robocopy — Используется в Windows Vista и Windows Server 2008, mirror
mode, синхронизация папок.
Synchronize It! — Одно или двунаправленная синхронизация папок,
множество опций.
GoodSync — Отнес к коммерческому ПО так как бесплатная версия всего 30 дней. Работает с любой файловой системой, может быть синхронизировано неограниченное количество файлов, настраиваемый интерфейс и многое другое.
SugarSync — Синхронизация между вашими PC, Mac, а также мобильные
устройствами и доступ к файлам из Интернета.
Bamboo File Sync — Автоматизированное резервное копирование и синхронизация файлов. Поддерживает большой спектр устройств, включая SD карты, HTPCs, MP3 плееры и многое другое.
SureSync — Обеспечивает надежную и гибкую синхронизацию и репликацию между ПК и серверами.
Super Flexible File Synchronizer — Резервное копирование данных и их
синхронизация: ПК, Mac, серверы, ноутбуки, Интернет.
SyncTogether — Утилита для синхронизации Mac: контакты, закладки,
календарь и другие важные данные.
iMobile — Корпоративное решение обеспечивает синхронизацию между
мобильными устройствами сотрудников и сервером компании.
beinsync — Синхронизация файлов между компьютерами, быстрый обмен файлами, доступ к файлам из Web-браузера, резервное копирование файлов через Интернет.
ViceVersa Pro — Более продвинутая версия, чем бесплатный аналог,
многочисленные методы синхронизации, никаких ограничений на размер
данных и т.д.
Beta Software
Dropbox – Никто не знает, будет ли этот сервис бесплатен, находится в
закрытом бета тестировании, говорят, что он якобы очень быстр, прост в
использовании, возможен доступ через Web.
Как справиться с «отложенной синхронизацией OneDrive» в Windows 10 [Советы по MiniTool]
При использовании OneDrive для синхронизации может возникнуть множество проблем. Ожидание синхронизации OneDrive — одно из них. Как только происходит отложенная синхронизация OneDrive, мы не можем синхронизировать файлы с облаком.
Быстрая навигация:
О OneDrive
Один диск был впервые запущен Microsoft в августе 2007 года. Он позволяет пользователям хранить файлы и личные данные в облаке. Мы можем обмениваться файлами и синхронизировать файлы в Windows и MacOS. И мы также можем загружать документы Microsoft Office прямо в OneDrive.
Зачем нужно выполнять синхронизацию файлов? Основных причин две:
1. Для некоторых предприятий, школ или других пользователей, использующих несколько компьютеров, поддерживать файлы в актуальном состоянии на таком большом количестве компьютеров сложно. На данный момент синхронизация файлов — идеальное решение для решения этой проблемы.
После загрузки файлов в OneDrive мы можем загружать файлы на другие компьютеры. Это экономит нам много времени и прост в управлении.
2. Некоторым пользователям синхронизация файлов помогает восстановить файлы как можно быстрее, если файлы потеряны или повреждены. Как только это произойдет, мы сможем загружать файлы из OneDrive, чтобы восстановить предыдущий статус.
Очевидно, что синхронизация файлов удобнее и полезнее. Но что нам делать, если OneDrive не синхронизируется? Сегодня мы покажем, как решить проблему синхронизации OneDrive.
Как исправить отложенную синхронизацию OneDrive
Переместить файл из папки синхронизации
Шаг 1 . Щелкните правой кнопкой мыши значок OneDrive на панели задач, затем щелкните Приостановить синхронизацию в контекстном меню. А затем выберите 2 часы .
Шаг 2 . Откройте путь к хранилищу OneDrive и найдите его папку синхронизации. Затем выберите файл, который нужно перетащить на рабочий стол.
Шаг 3 . Вернитесь на панель задач и щелкните правой кнопкой мыши OneDrive. выберите Возобновить синхронизацию в контекстном меню. Затем мы можем увидеть, нормально ли синхронизируется OneDrive.
Решено — как отключить или удалить OneDrive в Windows 10
Отключение или удаление OneDrive в Windows 10 будет легкой задачей. В этом посте вы узнаете, как отключить или удалить OneDrive за несколько шагов.
Сбросить OneDrive
Мы можем попытаться сбросить OneDrive, если синхронизация OneDrive зависла, как и раньше. Следуйте двум методам ниже:
Командной строкой
Шаг 1 . Тип Командная строка в поле поиска на панели задач и нажмите Войти .
Шаг 2 . Войдите в систему под своей учетной записью администратора и введите следующую инструкцию в Командная строка а затем нажмите Войти .
% localappdata % Microsoft OneDrive onedrive.exe / сброс
Шаг 3 . Если значок на панели задач не появляется через несколько минут, выполните следующую команду
% localappdata % Microsoft OneDrive onedrive.exe
После выполнения этой команды мы заметим синюю стрелку на значке OneDrive. Это означает, что файл синхронизируется. По завершении синхронизации проверьте, правильно ли синхронизированы все файлы и устранена ли проблема.
По настройке OneDrive
Шаг 1 . Щелкните правой кнопкой мыши значок OneDrive на панели задач и выберите Настройки в контекстном меню.
Шаг 2 . Далее обратимся к Счет в настройках Microsoft OneDrive и нажмите Отключить этот компьютер .
Шаг 3 . Предоставьте нам разрешение на отключение OneDrive в появившемся в следующем окне запросе подтверждения.
Шаг 4 . После отмены привязки учетной записи снова появится настройка OneDrive. Завершите этот мастер и настройте его.
Хотя OneDrive широко распространен, как и Windows, все же есть некоторые недостатки, например:
- Файл не может быть синхронизирован веб-версией.
- Это может не сработать.
Поэтому мы рекомендуем использовать MiniTool ShadowMaker. Когда мы воспользуемся им, у нас не возникнет вопросов, приведенных выше.
Использование стороннего программного обеспечения — MiniTool ShadowMaker
MiniTool ShadowMaker — один из лучших программное обеспечение для синхронизации файлов и имеет мощные функции, такие как резервное копирование файлов и папок, резервное копирование по времени, универсальное восстановление , синхронизация файлов и так далее. При обнаружении отложенной синхронизации OneDrive важную роль играет MiniTool ShadowMaker.
При синхронизации файлов мы можем синхронизировать файлы и папки с другим местом на нашем компьютере или других устройствах. Мы также можем синхронизировать файлы и папки автоматически в указанное время. Далее мы расскажем пошаговое руководство по синхронизации файлов.
Шаг 1: : Загрузите, установите и откройте пробную версию MiniTool ShadowMaker. Нажмите Продолжить испытание в главном интерфейсе и выберите подключение локального компьютера.
Шаг 2: Нажмите Синхронизировать на панели навигации.
Шаг 3: выберите Источник для выбора файлов и папок для синхронизации. Затем нажмите Хорошо .
Наконечник: Некоторые файлы используются системой и заблокированы, поэтому их нельзя выбрать.
Шаг 4 : Щелкните Пункт назначения и выберите место для хранения синхронизированных файлов или папок.
Мы можем выбрать в основном пять различных разделов:
Местоположение 1: нажмите Администратор и выберите из нее папку в качестве места назначения. Затем нажмите Хорошо подтвердить.
Местоположение 2: нажмите Библиотеки и выберите папку для хранения синхронизированных файлов. Затем нажмите Хорошо .
Местоположение 3: нажмите Компьютер и выберите диск для синхронизации (мы можем выбрать синхронизировать с внешним жестким диском , внутренний жесткий диск или съемный флешка ). Затем нажмите Хорошо .
Местоположение 4: нажмите Сеть а затем мы видим, что здесь перечислены все компьютеры в одной локальной сети. Выберите компьютер, на котором хотите сохранить синхронизированные файлы. А затем нажмите Хорошо .
Расположение 5: нажмите Поделиться а затем выберите Добавить новое . Введите Путь , Имя пользователя и пароль в этом. Наконец, нажмите Хорошо .
Шаг 5 : Если нам нужно синхронизировать прямо сейчас, выберите Синхронизировать сейчас . Если мы хотим синхронизировать через некоторое время, выберите Синхронизировать позже .
Шаг 6 : Дождитесь завершения синхронизации файлов. Затем мы можем найти его в Управлять страница.