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ąć?


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 .


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.