To pytanie ma już odpowiedź tutaj:
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
linux
hard-drive
external-hard-drive
Arnaud
źródło
źródło
Odpowiedzi:
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)
źródło
Tak, możesz skopiować plik do wielu miejsc docelowych za pomocą cat i tee:
Lub być bardziej symetrycznym:
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:
Ale jeśli zaoszczędzisz na odczytach dysku, prawdopodobnie trafisz na problemy z przepustowością we / wy.
źródło