Po migracji do systemu Linux z systemu Windows chciałbym znaleźć alternatywne oprogramowanie dla Winmerge lub raczej nauczyć się narzędzi wiersza poleceń do porównywania i synchronizacji dwóch folderów w systemie Linux. Byłbym wdzięczny, gdybyś mógł mi powiedzieć, jak wykonać następujące zadania w wierszu polecenia ... (Studiowałem diff i rsync, ale nadal potrzebuję pomocy).
Mamy dwa foldery: „/ home / user / A” i „/ home / user / B”
Folder A to miejsce, w którym zapisywane są zwykłe pliki i foldery, a folder B jest folderem kopii zapasowej, który służy jako pełne lustro folderu A. (Użytkownik nie zapisuje ani nie modyfikuje bezpośrednio w folderze B.)
Moje pytania to:
Jak wyświetlić listę plików, które istnieją tylko w folderze B? (Np. Te usunięte z folderu A od ostatniej synchronizacji.)
Jak skopiować pliki istniejące tylko w folderze B z powrotem do folderu A?
Jak wyświetlić listę plików, które istnieją w obu folderach, ale mają różne znaczniki czasu lub rozmiary? (Te, które zostały zmodyfikowane w folderze A od ostatniej synchronizacji. Chciałbym unikać używania sum kontrolnych, ponieważ istnieją dziesiątki tysięcy plików, co spowodowałoby, że proces byłby zbyt wolny.)
Jak zrobić dokładną kopię folderu A do folderu B? Mam na myśli, skopiuj wszystko z folderu A do folderu B, który istnieje tylko w folderze A i usuń wszystko z folderu B, który istnieje tylko w folderze B, ale bez dotykania plików, które są takie same w obu folderach.
źródło
Odpowiedzi:
Spowoduje to umieszczenie folderu A w folderze B:
Jeśli chcesz, aby zawartość folderów A i B była taka sama, wstaw
/home/user/A/
(z ukośnikiem) jako źródło. To nie bierze folderu A, ale całą jego zawartość i umieszcza go w folderze B. Tak:-a
Wykonaj synchronizację zachowując wszystkie atrybuty systemu plików-v
biegać werbalnie-u
kopiuj tylko pliki z nowszym czasem modyfikacji (lub różnicą rozmiaru, jeśli czasy są równe)--delete
usuń pliki w folderze docelowym, które nie istnieją w źródleManpage: https://download.samba.org/pub/rsync/rsync.html
źródło
/home/user/B/A
zamiast zastępować zawartość A treścią B. Czy mógłbyś mi pomóc to zobaczyć?Możesz
unison
opracować narzędzie opracowane przez Benjamina Pierce'a w U Penn.Załóżmy, że masz dwa katalogi,
/home/user/Documents/dirA/
i/home/user/Documents/dirB/
Aby zsynchronizować te dwa, możesz użyć:
~ $
unison -ui text /home/user/Documents/dirA/ /home/user/Documents/dirB/
W wyniku
unison
wyświetli każdy katalog i plik, który jest inny w dwóch katalogach, o które poprosiłeś o synchronizację. Zaleca się dodatkową synchronizację (replikację brakującego pliku w obu lokalizacjach) przy pierwszym uruchomieniu, a następnie utworzyć i utrzymywać drzewo synchronizacji na komputerze, a przy kolejnych uruchomieniach zaimplementuje prawdziwą synchronizację (tj. Jeśli usuniesz plik.../dirA
, zostanie również usunięty.../dirB
. Możesz także porównać każdą zmianę i opcjonalnie wybrać synchronizację do przodu lub do tyłu między dwoma katalogami.Opcjonalnie, aby uruchomić interfejs graficzny, po prostu usuń
-ui text
opcję z polecenia, chociaż uważam, że jest tocli
prostsze i szybsze w użyciu.Więcej na ten temat: Samouczek Unison w dokumentacji użytkownika Unison .
źródło
Odpowiedź TuxForLife jest całkiem dobra, ale zdecydowanie sugeruję, abyś używał jej
-c
podczas synchronizacji lokalnej. Możesz argumentować, że nie warto tracić czasu / kary sieciowej na zdalne synchronizacje, ale jest to całkowicie warte dla plików lokalnych, ponieważ prędkość jest tak duża.To pokazuje, że posiadanie tego samego rozmiaru i znaczników czasu może Cię zawieść.
Ustawić
Rsync, który niczego nie kopiuje, ponieważ wszystkie pliki mają ten sam rozmiar i znacznik czasu
Rsync, który działa poprawnie, ponieważ porównuje sumy kontrolne
źródło
To jest to, czego używam do tworzenia kopii zapasowych plików osobistych, gdzie nie dbam o wszystko objęte
-a
i chcę wydrukować więcej przydatnych informacji.Ze strony man rsync :
Od
rsync --info=help
Choć mniej wyraźne, wydaje się to równoważne i krótsze:
źródło
Nie jest to całkowicie to samo, o co prosisz, ale możesz rozważyć użycie narzędzia do kontroli wersji. Narzędzia takie jak Git wykonują wszystko, o co prosisz, a nawet więcej, zwłaszcza jeśli nie pracujesz bezpośrednio w folderze B, interesujące może być spojrzenie na to. Więcej informacji na temat git można znaleźć tutaj
źródło
Możesz użyć tego w następujący sposób:
W ten sposób skopiujesz zawartość folderu A do folderu B, a nie zawartość samego folderu A.
źródło