Próbuję ustawić dwukierunkową lub dwukierunkową synchronizację z rsync. W moim przypadku muszę tylko usunąć pliki podczas synchronizacji z B do A. Tak więc myślałem o uruchomieniu rsync dwa razy w następujący sposób:
rsync -rtuv ./A/ ./B/
rsync -rtuv --delete ./B/ ./A/
Ten problem z tym rozwiązaniem polega na tym, że kiedy uruchomię rsync (B-> A), co byłoby zaraz po uruchomieniu rsync (AB), każdy nowy plik utworzony pomiędzy synchronizacją zostanie również usunięty.
Czy istnieje sposób na określenie znacznika czasu jako warunku, że usunie on plik tylko, jeśli został utworzony przed tą datą / godziną.
Zaktualizowano:
Rozumiem, że istnieje rozwiązanie unison, ale problem z unison jest wymagany do instalacji na obu końcach. Synchronizuję się ze zdalnym serwerem i nie mogę zainstalować unisona na zdalnym końcu.
źródło
Odpowiedzi:
Możesz spróbować osync, który jest przeznaczony właśnie do tego zadania. Kiedyś ustawiłem złożoną sekwencję poleceń rsync, aby wykonać to zadanie, ale teraz używam osync.
https://github.com/deajan/osync
Używa rsync wewnętrznie, więc powinno być odpowiednie dla każdej sytuacji, w której możesz użyć rsync.
źródło
rsync
jest niewłaściwym narzędziem do tego zadania, z dokładnie takich samych powodów. Zamiast tego rozważ użycieunison
:Przy pierwszym uruchomieniu program rozpozna pliki, które są unikatowe
A
, i te, które są unikatoweB
. Będzie również oznaczać te, które są w obu miejscach i prosić o określenie, które mają zostać zastąpione.Następnym razem, kiedy uruchomić ten będzie skopiować zmiany od
A
celuB
, a takżeB
doA
, zgłaszając żadnych plików, które zostały zmienione w obu miejscach do ręcznego rozmiar.Dostępnych jest wiele przydatnych flag,
unison
które pomagają zautomatyzować proces poprzez zdefiniowanie założeń, a tym samym zmniejszenie liczby pytań zadawanych podczas synchronizacji.źródło
Tak naprawdę potrzebujesz Rclone . Rclone to rsync do przechowywania w chmurze (box, dropbox, nextcloud, ftp itp.) I lokalnego przechowywania.
źródło