RSync przenieś pliki do innego katalogu, jeśli zostały usunięte na serwerze

3

Więc teraz używam rsync do synchronizacji plików z serwerem. Czasami pliki na serwerze są usuwane (wiem o tej --deleteopcji i nie korzystam z niej) i te pliki są pozostawiane w moim katalogu lokalnym, aby później je wyczyścić.

Niestety wymaga to ode mnie pobrania listy plików na serwerze, stwierdzenia, których plików już nie ma na serwerze, i przeniesienia ich do innego katalogu lokalnego.

Chcę jakoś zautomatyzować ten proces. Nie wiem, czy taka opcja istnieje w rsync, ale zadowoliłbym się czymkolwiek, o ile zautomatyzowałoby to powtarzalne zadanie.

Czy ktoś wie, jak można to osiągnąć?

RedHack
źródło
Myślę, że musiałbyś napisać własny skrypt, aby przenieść usunięte pliki do kosza.
Warren P,
Właściwie nie chcę przenosić moich plików do kosza, chociaż uważam, że to niewielka zmiana. W każdym razie wymyśliłem rozwiązanie, które zamierzam opublikować.
RedHack

Odpowiedzi:

3

Zrozumiałem to sam. Rozwiązaniem jest zamontowanie katalogu SFTP z serwera w katalogu lokalnym za pomocą, sshfsa następnie użyj diff. Dla tych, którzy chcą skorzystać z tego obejścia, można znaleźć wskazówki tutaj: http://blog.damontimm.com/how-to-mount-a-sftp-folder-ssh-ftp-on-ubuntu-linux-using-sshfs- fuse / i tutaj: http://linuxcommando.blogspot.com/2008/05/compare-directories-using-diff-in-linux.html Pamiętaj tylko, aby użyć tej -o allow_otheropcji z sshfs, w przeciwnym razie będziesz mieć problemy z uprawnieniami do plików .

RedHack
źródło
Przyzwyczaiłem się już do tworzenia lokalnych kopii zapasowych za pomocą Carbon Copy Cloner na Mac OS X, który wcześniej używał wariantu rsync o nazwie psync, ale poszli na rynek, porzucili go i utracili tę funkcjonalność. lol
Jeff Burdges,
Czy nie jest to „właściwy sposób”, aby to zrobić --link-dest? Nigdy go nie używałem i za każdym razem musisz napisać skrypt, aby utworzyć nowy katalog, ale to załatwi sprawę. Wygląda na mniej przyjazny dla użytkownika niż wehikuł czasu: superuser.com/questions/441522/…
Jeff Burdges
3

Znalazłem możliwe rozwiązanie, ale musisz uruchomić rsync dwa razy.

W pierwszym uruchomieniu skopiuj nowe i zmienione pliki, takie jak:

rsync -xav source/ dest/

W drugim uruchomieniu usuń i przenieś pliki:

rsync --delete --backup --backup-dir=DIR_DELETED_FILES -xav source/ dest/

Zauważ, że --backup-dir może być absolutny.

Nik
źródło