Jednoczesna kopia na zewnętrzny dysk twardy [duplikat]


0

Mam jeden folder na wewnętrznym dysku twardym. Muszę skopiować folder na wiele zewnętrznych dysków twardych. Jeśli kopiowanie może nastąpić jednocześnie, pomoże mi to zyskać na czasie.

Nazwa folderu to „AllFiles”. Folder znajduje się w katalogu głównym wewnętrznego dysku twardego. /Wszystkie pliki

Nie, aby skopiować go do / dev / sdb, / dev / sdc i / dev / sdd

Widziałem kilka linii poleceń za pomocą cat i tee. Nie można go przetestować, ponieważ dotyczył określonego, a miejscem docelowym był folder sieciowy.

Czy ktoś może pomóc?

Z góry dziękuję,

Arnaud


Odpowiedzi:


0

Sposobem rozwiązania tego problemu zależy od tego, co twój dokładny cel.

Korzystanie z TEE nie byłoby tu zbyt pomocne - tee pozwala ci wziąć stdout i podzielić go na dwa, chociaż może być zmuszony do licytowania przez przechwycenie każdego pliku przez tee.

Najprostszym sposobem na to byłoby po prostu zamontowanie każdego napędu i uruchomienie 3 kopii (możesz to zrobić w 3 terminalach lub możesz wydać to samo polecenie 3 razy, z & po każdym, aby umieścić go w tle). To przybije IO do ściany.

Jeśli dyski nie muszą być usuwane i potrzebują identycznych informacji, wziąłbym 3 dyski i utworzyłem macierz RAID1 (tj. 3 kopie tych samych danych) za pomocą mdadm . Następnie utworzyłem system plików w macierzy RAID, zamontowałem macierz i wykonałem kopię. Będzie to oznaczało mniej odczytów (być może) i najmniejszy narzut związany z zapisywaniem na dysk - ale sporo konfiguracji. (TAK, możesz następnie wziąć pojedynczy dysk i zamontować go, nie będąc częścią tablicy)


Czuję, że drugi pomysł jest znakomity. Myślałem o tym w przeszłości, ale nie wiedziałem, jak zrobić RAID0 z 3 dysków. Pozwól mi wypróbować polecenie mdadm. Cofnę się.
Arnaud

0

Tak, możesz skopiować plik do wielu miejsc docelowych za pomocą cat i tee:

cat source.dat | tee copy1.dat | tee copy2.dat >copy3.dat 

Lub być bardziej symetrycznym:

cat source.dat | tee copy1.dat | tee copy2.dat | tee copy3.dat >/dev/null

W praktyce należy umieścić powyższą linię w krótkim skrypcie, który przyjmuje plik źródłowy jako parametr, i wywołać ten skrypt za pomocą polecenia find:

find $directory_to_be_copied -type f -exec copy_multiple {} \;

Ale jeśli zaoszczędzisz na odczytach dysku, prawdopodobnie trafisz na problemy z przepustowością we / wy.


Jestem początkującym w Linuksie i wierszu poleceń. Trudno zrozumieć, co masz na myśli. Ale na pewno zrobię kilka testów i przywrócę. W każdym razie dzięki.
Arnaud
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.