Синхронизация удаленных папок в Linux

11422
Lakshman Prasad

Какой самый простой способ однонаправленной инкрементальной синхронизации папки, присутствующей в системе Linux.

+1 за использование командной строки. +2 за неиспользование rsync (похоже, у меня проблемы в моей системе.)

4
Какие именно у вас проблемы с rsync? innaM 10 лет назад 3
Поскольку `rsync`, скорее всего, самый простой ответ, объясните, какие у вас проблемы с этим. (Проблемы могут перетекать в любое другое решение.) Telemachus 10 лет назад 5

4 ответа на вопрос

7
hayalci

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

rsync -uav --delete /loal/path example.com:/remote/path 

Примечание: Для двунаправленной синхронизации, вы можете использовать в унисон, а также ющий .

+1, но это был только частичный ответ для меня. Если вам нужно использовать `rsync` поверх ssh, используйте` rsync -uav --delete -e ssh remoteuser @ remotehost: / remote / dir / this / dir / ` zelanix 5 лет назад 0
7
Robert Munteanu

csync - это синхронизатор файлов, специально разработанный для вас, обычного пользователя.

csync - это библиотека, которая по умолчанию поставляется с клиентом командной строки. Это сервер-менее и позволяет синхронизацию либо через sftpили samba.

Примеры использования:

csync /home/csync smb://csync:secret@rupert.galaxy.site/Users/csync csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync 
Команда `csync` предоставляется пакетом ubuntu` csync-owncloud`. (`sudo apt-get install csync-owncloud`` libcsync-plugin-sftp libcsync-plugin-smb`, если вы хотите их тоже) ThorSummoner 4 года назад 0
Таким образом, выполняется одноразовая синхронизация по требованию. Я не нашел никакой информации о том, как использовать это для мониторинга и постоянной синхронизации каталога. ThorSummoner 4 года назад 0
2
nik

Вот как я могу сделать однонаправленную синхронизацию с голыми инструментами.

В начале, tar весь набор файлов и скопируйте их в пункт назначения.
Также установите маркер в базовом каталоге.

touch /Source/base/directory/last-sync-time.txt 

Теперь мы хотим продолжать синхронизацию от источника к месту назначения.

В следующий временной интервал для синхронизации вперед (от источника к месту назначения),

# The backup script cd /Source/base/directory tar cfj -N ./last-sync-time.txt backup.tar.bz2 . scp backup.tar.bz2 user@backup-server:/Backup/Directory/ touch /Source/base/directory/last-sync-time.txt rm -f backup.tar.bz2 
  1. -N ./filenameГоворит деготь архивировать только файлы, измененные или созданные после filenameмодифицировали / создан.
    • Использование локальной ссылки на время подтверждает, что вы не ошиблись; если по какой-то причине резервная копия не была взята, следующая будет накапливаться
    • Вы можете настроить этот скрипт как запись cronjob на компьютере-источнике.
    • Я предполагаю, что вы будете использовать аутентификациюscp с открытым ключом
    • Также при условии, что вы можете получить доступ к backup-serverвсякий раз, когда этот скрипт выпущен.
    • Чтобы быть более безопасным, вы можете добавить проверки, подтверждающие, что резервная копия была сохранена, и затем выполнить touchкоманду
    • Вы также можете добавить команды для расширения резервных копий, накладывая их поверх предыдущих в точке назначения; Или сохраняйте пошаговые tar.bz2архивы.
0
umetnic

I Use this short script for monitoring and continually synchronizing a directory with remote sftp folder;

#!/bin/sh dir1=/home/user/folder while inotifywait -qqre modify "$dir1"; do csync /home/user/folder sftp://remoteuser:remotepass@remoteaddress:remoteport/remotefolderpath done