Jak automatycznie zarchiwizować katalog?

47

Chcę przeprowadzić synchronizację w jedną stronę.

Mam Folder Ana swoim komputerze, który jest stale aktualizowany treścią.
Inny Folder Bsłuży do tworzenia kopii zapasowych na zewnętrznym dysku twardym.

Oczekuję teraz, że wszystko, co jest obecne w folderze A, powinno przejść do folderu B. Jednak coś, co jest obecne w B, a NIE w A „”, NIE zostanie skopiowane do A „”.

Krótko mówiąc, folder kopii zapasowej może skopiować wszystko z folderu źródłowego, jednak nic nie powinno być kopiowane z folderu kopii zapasowej do źródła.

Bhavesh Diwan
źródło
To nie jest synchronizacja ....
Braiam
@Braiam jak się wtedy nazywa? Nie mogłem wymyślić słowa takiego jak OP. Jeśli wiesz, powiedz.
Jo Smo
@JoSmo skopiować? Archiwum? Utworzyć kopię zapasową?
Braiam
@Braiam dzięki, teraz czuję się głupio, że pytam. : D
Jo Smo

Odpowiedzi:

63

Brzmi jak idealne zadanie dla rsync

sudo rsync -az /path_to/A /path_to/B

- tryb archiwizacji (oznacza rekurencyjne, kopiowanie dowiązań symbolicznych jako dowiązań symbolicznych, zachowanie właściciela, czasy modyfikacji, grupa, właściciel, pliki specjalne i pliki urządzeń)

-z kompresuje dane

Jeśli chcesz usunąć pliki usunięte w A z plików w B, skorzystaj z --deleteopcji

Aby uzyskać dodatkowe informacje, patrz:

https://help.ubuntu.com/community/rsync

Możesz uruchomić rsync z crona

sudo crontab -e

Dodaj zadanie godzinowe

@hourly rsync /path_to/A /path_to/B

https://help.ubuntu.com/community/CronHowto

Pantera
źródło
7
Jeśli w folderach znajdują się foldery, musisz użyć opcji -r.
John S Gruber,
2
Jestem trochę spóźniony na imprezę, ale aby uruchomić skrypt synchronizacji po podłączeniu dysku twardego, powinieneś użyć udev. Sprawdź to pytanie jakiś czas temu. askubuntu.com/questions/25071/…
jackweirdy
1
@JohnSGruber opcja -a oznacza rekurencję, zmienię odpowiedź, aby to podkreślić
Tomas
1
jeśli pliki znajdują się na tym samym komputerze, -zspowolnij proces
Postadelmaga
1
@JoSmo - askubuntu.com/questions/476041/... i askubuntu.com/questions/609968/... i man rsync i w razie potrzeby zadaj nowe pytanie zamiast zadawać komentarzy.
Panther
15

Sugeruję użycie rsync do tego celu. Rsync jest niezwykle szybki, stabilny i wszechstronny. Dobre wprowadzenie znajduje się na stronie http://help.ubuntu.com/community/rsync

Jeśli chcesz, istnieje opcjonalny graficzny interfejs użytkownika: grsync

 sudo rsync -azv --exclude 'dir1' /home/path/folderA/ /home/path/folderB

Powyższe polecenie skopiuje z folderu A do folderu B z wyłączeniem katalogu 1. Flagi są

-a preserves time stamps
-z is to enable compression
-v verbose

Dostępnych jest wiele innych opcji.

JIm
źródło
8

Zawsze uważałem, że Unison jest bardzo pomocny. Ma interfejs oparty na tekście lub graficznym interfejsie użytkownika i całkiem sporo różnych opcji, aby dostosować go do tego, co chcesz (z odrobiną majstrowania). Pierwsza synchronizacja zajmuje sporo czasu, ale potem jest genialna. Możesz go zsynchronizować w jedną stronę, jak chcesz, ale prawie dostanie to automatycznie. Można również usunąć z kopii zapasowej lub nie, jak chcesz.

Możesz również znaleźć problemy z uprawnieniami obsługiwanymi w formacie pliku ubuntu, ale może nie na zewnętrznym dysku twardym (w zależności od tego, czy zewnętrzny dysk twardy będzie używany na komputerze z systemem Windows, może to być dobra rzecz), więc będziesz chciał synchronizować potencjalnie bez uprawnień.

W każdym razie fajną rzeczą jest to, że dzięki samouczkowi ustawienie go jest stosunkowo proste, a następnie jest to interfejs GUI, kiedy tylko chcesz.

Oto kilka informacji na ten temat: http://www.ubuntugeek.com/unison-file-synchronization-tool.html

A oto samouczek: http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#tutorial

Dr Xorile
źródło
4
rsync -avPr --ignore-existing /home/username/Research/ /path/to/other/folder/on/hdd/

Spowoduje to zsynchronizowanie i skopiowanie tylko tych danych, które nie istnieją w /other/folder/on/hdd/

drodzy
źródło
2

Zgadzam się z innymi odpowiedziami, których możesz użyć w rsync w Terminalu lub interfejsach Grsync , luckyBackup , Conduit lub słynnej Unison .

Inną świetną aplikacją jest Krusader (Menedżer plików z dwoma panelami dla KDE), w menu Narzędzia, w którym znajduje się „Synchronizuj katalogi”, jest bardzo przydatny.

W ostatnim przypadku możesz zainstalować Wine i zainstalować inny świetny menedżer plików z dwoma panelami, taki jak Total Commander .

W każdym razie masz wiele opcji i wszystkie są obecne w Centrum oprogramowania Ubuntu.

Raúl F. Castro S.
źródło
1

Polecam Conduit do prostej synchronizacji. Jest dostępny system oprogramowania. Robi dokładnie to, czego szukasz

jasonwert
źródło
0

Istnieje całkiem przydatne narzędzie powłoki o nazwie rsnapshot - http://www.rsnapshot.org/ - narzędzie do tworzenia migawek systemu plików do tworzenia kopii zapasowych systemów lokalnych i zdalnych. który korzysta z rsync i twardych dowiązań, co umożliwia natychmiastowe udostępnienie wielu pełnych kopii zapasowych systemu plików. Po prostu zrób sudo apt-get install rsnapshoti sprawdźinfo rsnapshot

użytkownik1180249
źródło
0

Możesz zsynchronizować pliki w dwóch katalogach poprzez:

rsync -rv /path/to/directory1/ /path/to/directory2

Robienie rsync -rv /path/to/directory1 /path/to/directory2stworzy directory1wewnątrz directory2, w ten sposób/path/to/directory2/directory1/[files]

Możesz uruchomić na sucho za pomocą -nprzełącznika, takiego jak tenrsync -rnv /path/to/directory1/ /path/to/directory2

Odniesienie: https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-on-a-vps

subhojit777
źródło
0

Jeśli chcesz interfejs graficzny w systemie, który jest wysoce konfigurowalny, wypróbuj FreeFileSync. Zobacz na przykład: http://linuxnorth.wordpress.com/2011/11/29/file-and-folder-synchronization/ W szczególności chcesz mieć opcję „Aktualizuj” dla synchronizacji, która „Skopiuje nowe lub zaktualizowane pliki do prawy folder ”, tzn. skopiuj z lewego folderu do prawego folderu na ekranie dwóch okien.

Centaurus A.
źródło