4

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

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

4 ответа4

7

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

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

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

7

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
2

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

В начале, 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 указывает tar архивировать только файлы, измененные или созданные после изменения / создания filename .
    • Использование локальной ссылки на время подтверждает, что вы не ошиблись; если по какой-то причине резервная копия не была взята, следующая будет накапливаться
    • Вы можете настроить этот скрипт как запись cronjob на компьютере-источнике.
    • Я предполагаю, что вы будете использовать scp с аутентификацией с открытым ключом
    • Также при условии, что вы можете связаться с backup-server при каждом запуске этого скрипта.
    • Чтобы быть более безопасным, вы можете добавить проверки, подтверждающие, что резервная копия была сохранена, а затем выполнить touch команду
    • Вы также можете добавить команды для расширения резервных копий, накладывая их поверх предыдущих в точке назначения; Или сохраняйте инкрементные архивы tar.bz2 .
0

Я использую этот короткий скрипт для мониторинга и постоянной синхронизации каталога с удаленной папкой sftp;

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .