Jak mogę skopiować pliki z folderu do innego folderu w terminalu Linux?

How Can I Copy Files Folder Into Another Folder Linux Terminal



Kiedy potrzebujesz skopiować zawartość katalogu do innego, w przypadku Linuksa masz do dyspozycji mnóstwo narzędzi. Którego użyć? To zależy od sytuacji i osobistych preferencji. W tym artykule przyjrzymy się sposobom kopiowania zawartości pliku z jednego folderu do drugiego w terminalu. Będzie zawierał niektóre z popularnych wyborów w różnych sytuacjach.

Kopiowanie plików w terminalu

Kopiowanie zawartości jednego katalogu do drugiego jest bardzo prostym zadaniem. Masz jednak wiele możliwości, aby to zrobić. Linux jest pobłogosławiony licznymi narzędziami do manipulowania plikami i katalogami za pomocą różnych działań.







Wszystkie kroki są zademonstrowane w Ubuntu 18.04.1. Najpierw utwórzmy garść fikcyjnych plików do pracy.



$mkdir -vdir_A



Teraz utwórzmy atrapy plików za pomocą dotyku.





$dotykaćatrapa{1...10}

Stwórzmy kolejny folder w dir_A z kilkoma fikcyjnymi plikami.



$mkdir -vdir_B
$dotykaćatrapa{1...10}

Teraz cała struktura katalogu dir_A wygląda tak.

$drzewodir_A

Cp Command

ten cp polecenie jest zdecydowanie najczęstszym narzędziem do kopiowania plików. Jest to narzędzie, które jest domyślnie dostarczane z dowolnym systemem Linux. Kopiowanie plików i katalogów jest wyłącznym celem cp. Obsługuje szeroką gamę funkcji.

To jest podstawowa struktura cp Komenda.

$cp <opcje> <źródło> <Miejsce docelowe>

Na przykład zróbmy kopię manekin1 plik o nazwie manekin1_kopia .

$cpdummy1 dummy1_copy

Teraz spróbujmy skopiować wiele plików jednocześnie. Dla takiej operacji cp wymaga, aby miejscem docelowym był katalog. Tutaj użyję wyrażenia wieloznacznego, aby uchwycić wszystkie atrapa pliki i umieść je w ~/Pobieranie informator.

$cpatrapa*~/Pliki do pobrania

Co powiesz na skopiowanie katalogu?

$cp -vrdir_A dir_A_copy

Tutaj użyliśmy dwóch różnych flag. Zróbmy szybki ich podział.

  • -r: oznacza a rekursywny kopia (w tym wszelkie ukryte pliki). Flaga must-have, jeśli kopiowanie obejmuje cały katalog lub więcej.
  • -v: oznacza gadatliwy . Narzędzie cp wyświetli każdą wykonywaną akcję.

Chcesz śledzić dowiązania symboliczne? Dodaj flagę -L.

$cp -Lvr <źródło> <Miejsce docelowe>

Załóżmy, że katalog docelowy ma już plik o tej samej nazwie. Jeśli chcesz uniknąć nadpisywania, użyj flagi -n. Zapewni to, że w przypadku konfliktu cp nie nadpisze pliku.

$cp -nv <źródło> <Miejsce docelowe>

Jeśli wykonujesz poufną akcję kopiuj/wklej, lepiej mieć najlepszą kontrolę nad tym, co się dzieje, prawda? W takim przypadku użyj flagi -i. Oznacza tryb interaktywny, w którym cp poprosi o potwierdzenie za każdym razem, gdy pojawi się konflikt.

$cp -i <źródło> <Miejsce docelowe>

Jeśli jesteś bardziej zainteresowany, strona podręcznika jest zawsze jedną z najlepszych dokumentacji. Dowiedz się więcej o cp .

$facet cp

polecenie mv

Narzędzie mv jest podobne do narzędzia cp. Jednak zamiast kopiować, mv przenosi pliki i katalogi. W porównaniu do cp jest prostszy.

Struktura poleceń mv jest podobna do cp.

$mv <opcja> <źródło> <Miejsce docelowe>

Aby przenieść zawartość dir_A do dir_A_copy , uruchom następujące polecenie.

$mv -vdir_A/dir_A_copy

Tutaj flaga -v jest dla gadatliwy tryb. Jeśli chcesz przenieść tylko zawartość dir_A, użyj zamiast tego poniższego. W takim przypadku katalog docelowy musi istnieć wcześniej.

$mv -vdir_A/ *dir_A_copy

Narzędzie mv nie ma wiele do roboty. Wszystkie dostępne opcje znajdziesz na stronie podręcznika.

$facet mv

Polecenie Rsync

Jest to jedno z najpopularniejszych i najpotężniejszych narzędzi do kopiowania plików, wykorzystywane głównie do tworzenia kopii zapasowych. Posiada możliwość kopiowania plików przez zdalne połączenie. W przeciwieństwie do cp i mv, zawiera również mnóstwo zaawansowanych opcji kopiowania plików, które oferują maksymalne dostosowanie jego zachowania.

Rsync słynie przede wszystkim z algorytmu transferu delta, który radykalnie zmniejsza ilość danych, które należy wymienić. W przypadku synchronizacji zdalnej oszczędza to dużo przepustowości.

Rsync zazwyczaj nie jest wstępnie instalowany w żadnej dystrybucji Linuksa. Jednak ze względu na swoją popularność jest teraz dostępny we wszystkich głównych dystrybucjach Linuksa. Posługiwać się Pkgs.org aby znaleźć pakiet rsync dla twojej dystrybucji. Zakładając, że masz zainstalowany rsync, zacznijmy.

Po pierwsze, podstawowa struktura poleceń rsync. Jest całkiem podobny do cp.

$rsync<opcje> <źródło> <Miejsce docelowe>

Zanim zaczniesz, oto kilka popularnych argumentów rsync.

  • -v : Tryb szczegółowy, wyświetla każdą akcję wykonywaną na ekranie konsoli.
  • -vv : Tryb szczegółowy z większą ilością szczegółów
  • -r : Tryb rekursywny, musi być obecny przy kopiowaniu katalogów
  • -z : Skompresuj dane
  • -do : Dane archiwalne
  • -n : Bieg próbny, powinien być uruchamiany w połączeniu z trybem gadatliwym. Po prostu wypisuje akcje, jeśli polecenie ma działać naprawdę
  • -kasować : Usuń plik(i) i katalog(i) w katalogu docelowym, jeśli katalog źródłowy już ich nie zawiera
  • -brak-całego-pliku : Wymusza na rsync użycie algorytmu transmisji delta, bez względu na wszystko. Przydatne w scenariuszach, w których należy zapewnić jak najmniejszą ilość zapisu danych.
  • –usuń-plik-źródłowy : Usuń plik(i) źródłowe po skopiowaniu.

Sprawdźmy je w akcji. Najpierw kopia katalogu. Uruchom następujące polecenie.

$rsync-vrdir_A/dir_A_copy

Aby uzyskać bardziej szczegółowe dane wyjściowe, użyjmy flagi -vv.

$rsync-vv -rdir_A/dir_A_copy

Teraz sprawdźmy fajną część rsync. Omówiliśmy, w jaki sposób rsync inteligentnie kopiuje tylko zmodyfikowane pliki, oszczędzając przepustowość i zapis na dysku. Czas sprawdzić to w akcji. W tym przykładzie akcja zostanie wykonana w ciągu dir_A informator.

$rsync-vv --brak-całego-plikuatrapa*dir_B/

Pomimo włączonej transmisji delta rsync może jej nie zastosować podczas lokalnego przesyłania danych.

Sprawdźmy teraz funkcję suchobiegu. Zanim uruchomisz jakiekolwiek polecenie rsync na serio, zawsze ważne jest, aby je wcześniej przetestować. W tym miejscu pojawia się próbny przebieg. Rsync wyświetli, co się stanie, jeśli polecenie rzeczywiście zostanie uruchomione.

$rsync-anvrdir_A/dir_A_copy

Rsync może również pracować ze zdalnymi katalogami, bez problemu. Wszystko czego potrzebuje to prawidłowe połączenie SSH ze skonfigurowanymi kluczami SSH.

$ rsync<opcja> <katalog_lokalny>
<Nazwa Użytkownika> @<zdalny_host>:<katalog_docelowy>

Chcesz wykonać operację przenoszenia? Aby umieścić to w perspektywie rsync, rsync skopiuje zawartość katalogu źródłowego, a następnie usunie zawartość źródłową.

$rsync-v --usuń-pliki-źródłowe <źródło> <Miejsce docelowe>

Sprawdź wynik operacji.

$drzewodir_A

$drzewodir_A_copy

Końcowe przemyślenia

cp i rsync to najpopularniejsze narzędzia, których można używać do kopiowania plików w folderze na terminalu Linux. Oba są naprawdę dobre do pisania skryptów. Po prostu upewnij się, że przetestowałeś funkcje przed wdrożeniem.

Cieszyć się!