Chciałbym skopiować całą hierarchię systemu plików z jednego dysku na drugi ... zawartość każdego katalogu, a także zwykłe pliki na platformie Linux. Byłbym wdzięczny, gdyby wiedział, jak to zrobić za pomocą wbudowanych funkcji Linuksa. System plików to rodzina ext.
linux
filesystems
Żongler
źródło
źródło
dd
?dd if=/dev/sda1 of=/dev/sdb1 bs=4096
conv=notrunc,noerror,sync
.dd
2 powodów: po pierwsze, złym pomysłem jest wykonanie kopii blokowej systemu plików, który jest zamontowany (co ma miejsce w przypadku/
), a po drugiedd
nie kopiuje danych ze źródeł zamontowanych w systemie plików, takich jak/boot
i/home
.Odpowiedzi:
Często używam
Zakładając, że / mnt jest nowym dyskiem zamontowanym na / mnt i nie ma innych montowań na /.
-x utrzymuje go w jednym systemie plików.
Oczywiście należy to zrobić jako root lub używając sudo.
Ten link ma kilka alternatyw, w tym powyższą
http://linuxdocs.org/HOWTOs/mini/Hard-Disk-Upgrade/copy.html
źródło
/
wyłączeniem czyli/dev
,/sys
,/proc
itd. W związku z tym, że przed wydaniemcp
Proponuję poszukiwania lepszych rozwiązań (również za pomocą rsync)-x
oznacza, że wspomniane syntetyczne systemy plików nie zostaną skopiowane.To, czego chcesz, to rsync .
Za pomocą tego polecenia można zsynchronizować folder, a także wznowić kopiowanie, gdy zostanie przerwane do połowy. Polecenie skopiowania jednego dysku to:
Dostępne są następujące opcje:
Aby poprawić szybkość kopiowania, dodaj
-W
(--whole-file
), aby uniknąć obliczania różnic / różnic plików. Jest to ustawienie domyślne, gdy zarówno źródło, jak i miejsce docelowe są określone jako ścieżki lokalne, ponieważ prawdziwą zaletą algorytmu rsync delta-transfer jest zmniejszenie zużycia sieci.Należy również rozważyć dodanie,
--numeric-ids
aby uniknąć mapowania wartości UID / GID według nazwy użytkownika / grupy.źródło
rsync -avxHAWX --numeric-ids --progress / mnt/
ale powinienem był to zrobićrsync -avxHAWX --numeric-ids --progress / mnt/ > ~/rsync.out
. Podejrzewam, że nalewanie danych wyjściowych do terminala spowolniło proces. : D--info=progress2
zamiast--progress
jest przydatny przy dużych transferach, ponieważ daje ogólny postęp, zamiast (miliony linii dla) pojedynczych plików.X
iA
zE
, ponieważ rozszerzone atrybuty i ACL są objęteE
na moim mac. Testowane:rsync version 2.6.9 protocol version 29
> ~/rsync.out
,2> ~/rsync.err
pozwoli zaoszczędzić jakieś błędy w oddzielnym pliku./
, pamiętaj, że ukośnik końcowy (lub nie) w katalogu źródłowym robi różnicę:rsync source/ dest/
kopiuje wszystkosource/
do wewnątrzdest/
, arsync source dest/
kopiuje foldersource
i wszystko do wewnątrzdest/
.Odpowiedź Michaela Aarona Safyana nie uwzględnia rzadkich plików.
-S
opcja naprawia to.Również ten wariant nie spamuje przy każdym postępującym pliku i nie wykonuje synchronizacji delta, co zabija wydajność w przypadkach niesieciowych.
Idealny do kopiowania systemu plików z jednego dysku lokalnego na inny dysk lokalny.
źródło
55,431,669,792 57% 97.47MB/s 0:06:56 xfr#2888, ir-chk=5593/8534)
Dla jednej kopii lokalnej kopii z jednego dysku na drugi, myślę, że cp wystarczy, jak opisano powyżej Wolfmann.
W przypadku większych prac, takich jak na przykład lokalne lub zdalne kopie zapasowe, najlepszym rozwiązaniem jest rsync .
Oczywiście rsync jest znacznie bardziej skomplikowany w użyciu.
Dlaczego rsync:
pozwala to skopiować (synchronizowane kopiowanie) cały dysk A lub jego część na dysk B, z wieloma opcjami, takimi jak wykluczenie niektórych katalogów z kopii (na przykład wykluczenie / proc).
Inną dużą zaletą jest to, że to natywne narzędzie monitoruje przesyłanie plików: np. W przypadku dużych transferów, jeśli połączenie zostanie przerwane, będzie kontynuowane od punktu przerwania.
I wreszcie, rsync używa połączenia ssh, dzięki czemu można uzyskać zdalnie zsynchronizowane zabezpieczone „kopie”. Wystarczy popatrzeć na stronie człowieka , a także tutaj kilka przykładów .
źródło
Jak sugeruje powyżej Michael Safyan, wykorzystałem
rsync
do tego celu. Sugeruję użycie dodatkowych opcji, aby wykluczyć katalogi, których prawdopodobnie nie chcesz kopiować.Ta wersja jest dość specyficzna dla systemów opartych na Gnome i Debian / Ubuntu, ponieważ zawiera podkatalogi katalogów domowych użytkowników, które są specyficzne dla Gnome, a także pamięć podręczną pakietów APT.
Ostatni wiersz wyklucza każdy katalog o nazwie cache / Cache / .cache, który może być zbyt agresywny dla niektórych zastosowań:
źródło
Dodanie dwóch użytecznych bitów do ponownej synchronizacji wątku: zmiana szyfru i użycie
--update
:Zgodnie z postem Wolfmana,
cp -ax
jest elegancki i fajny dla lokalnych rzeczy.Jednak
rsync
jest także niesamowity. W nawiązaniu do Michaela odpowiedzi re-W
, zmieniając Cypher może również przyspieszyć (czytaj na wszelkie względy bezpieczeństwa, chociaż).Istnieje kilka dyskusji (i benchmarki) wokół miejsca o powolnym procesora będącego faktycznym gardłem, ale wydaje mi pomóc, gdy maszyna jest załadowana się robi inne rzeczy współbieżnych.
Jednym z innych ważnych powodów używania rsync w tak dużej, rekurencyjnej kopii, jak ta, jest przełącznik -u (lub --update ). Jeśli podczas kopiowania wystąpi problem, możesz go naprawić, a rsync przejdzie do miejsca, w którym zostało przerwane (nie sądzę, że scp ma to). Robiąc to lokalnie, cp ma również przełącznik -u.
(Nie jestem pewien, jakie są implikacje --update i - cały plik razem, ale zawsze wydają się one działać rozsądnie dla mnie w tego rodzaju zadaniu)
Zdaję sobie sprawę, że nie jest to wątek na temat funkcji rsync, ale niektóre z najczęściej używanych do tego są:
Nawiasem mówiąc, jeśli kiedykolwiek muszę korzystać z systemu Windows, używam rsync z cygwina, aby robić duże rekurencyjne kopie, ponieważ odkrywca jest nieco oszołomiony, aby zacząć od początku (chociaż uważam, że Finder jest OS X jeszcze gorszy)
źródło
rsync
Od:
https://wiki.archlinux.org/index.php/Full_system_backup_with_rsync
Strona man tutaj
źródło
Jak wspomniano w komentarzach juniorRubyist, preferowanym podejściem powinno być tutaj
dd
. Głównym powodem jest wydajność, jest to kopia blok po bloku zamiast pliku po pliku.Klonowanie partycji
Klonowanie całego dysku
Bibliografia
źródło
dd
jest bardzo złym pomysłem z dwóch powodów: po pierwsze wykonanie kopii na poziomie bloku zamontowanego systemu plików (co ma miejsce/
), najprawdopodobniej spowoduje błędy w docelowym systemie plików, a po drugiedd
nie skopiuje danych ze źródeł zamontowanych w obrębie system plików jak/boot
i/home
. Twój link dotyczy klonowania dysku, a nie klonowania „hierarchii plików”„dd” jest niesamowite, ale ddrescue (apt install gddrescue) jest jeszcze lepszy. Jeśli dd zostanie przerwane, nie ma możliwości ponownego uruchomienia (kolejny dobry powód, aby użyć rsync). Gdy używasz ddrescue z plikiem dziennika, śledzi on, które bloki zostały skopiowane.
Podczas tworzenia kopii zapasowej systemu Windows / Linux z podwójnym uruchomieniem używam ntfsclone dla partycji Windows i ddrescue dla partycji Linux i dd dla MBR. (Nie próbowałem wykonać kopii zapasowej systemu podwójnego rozruchu przy użyciu GPT / UEFI.)
Chciałbym zobaczyć to narzędzie ddrescue, które może tworzyć pliki takie jak ntfsclone, w których nieprzydzielone miejsce jest oznaczone znakami kontrolnymi. To sprawia, że obraz nie jest montowany bezpośrednio, ale pozwala, aby był tak duży jak zawarte w nim dane.
Niech ktoś zaproponuje „specjalny format obrazu” ntfsclone dla ddrescue ...
źródło
rsync
jest idealnym rozwiązaniem, jak wyjaśniono powyżej.Dodałbym tylko
-S
do „ wydajnej obsługi rzadkich plików ” w przypadku, gdy istnieje wolumin devicemapper dokera lub podobny do skopiowania.źródło
Próbowałem zaproponowanych tutaj poleceń rsync, ale w końcu uzyskałem znacznie czystsze i szybsze wyniki
partclone
. Odmontuj partycje źródłowe i docelowe, a następnie uruchom następujące czynności:Wykonuje to następujące kroki:
Powyższe działa w przypadku, gdy partycja docelowa jest tego samego rozmiaru lub większa niż źródło. Jeśli cel jest mniejszy niż źródło (ale pasuje do wszystkich danych), wykonaj następujące czynności:
resize2fs -M
zmniejsza system plików do minimalnego rozmiaru przed klonowaniem danych.Uwaga:
partclone
nie jest instalowana domyślnie w większości systemów. Użyj dystrybucji na żywo, takiej jak clonezilla, lub zainstaluj partclone ze swojego menedżera pakietów dystrybucyjnych (apt-get install partclone
na sytsemach opartych na Debianie).źródło