Jak mogę skopiować pliki w folderze do innego folderu na terminalu Linux

Jak mogę skopiować pliki w folderze do innego folderu na terminalu Linux
Kiedy potrzebujesz skopiowania zawartości katalogu do innej, w przypadku Linuksa, istnieje wiele narzędzi do Twojej dyspozycji. 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 popularne wybory w różnych sytuacjach.

Kopiowanie plików w terminalu

Kopiowanie treści jednego katalogu do drugiego jest bardzo prostym zadaniem. Masz jednak wiele opcji robienia tego. Linux jest pobłogosławiony wieloma narzędziami do manipulowania plikami i katalogami poprzez różne działania.

Wszystkie kroki są wykazane na Ubuntu 18.04.1. Początkowo stwórzmy garść fikcyjnych plików do pracy.

$ mkdir -v dir_a

Teraz utwórzmy manekin za pomocą dotyku.

$ Touch Dummy 1… 10

Utwórzmy kolejny folder w Dir_a z garstką fikcji.

$ mkdir -v dir_b
$ Touch Dummy 1… 10

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

$ Tree Dir_a

Polecenie CP

CP Polecenie jest zdecydowanie najczęstszym narzędziem do kopiowania plików. Jest to narzędzie, które jest domyślnie przyczynia się do dowolnego systemu Linux. Kopiowanie plików i katalogów są jedynym celem CP. Obsługuje szeroką gamę funkcji.

To jest podstawowa struktura CP Komenda.

$ cp

Na przykład zróbmy kopię Manekin1 Plik o nazwie Manekin1_copy.

$ cp manekin1 manekin1_copy

Teraz spróbujmy skopiować wiele plików naraz. W przypadku takiej operacji CP wymaga, aby miejsce docelowe było katalogiem. Tutaj użyję ekspresji wieloznacznej, aby złapać wszystkie atrapa pliki i umieść je w ~/Pobieranie informator.

$ cp manekin* ~/pliki do pobrania

Co powiesz na skopiowanie katalogu?

$ cp -vr dir_a dir_a_copy

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

  • -R: oznacza rekurencyjny Kopia (w tym dowolne ukryte pliki). Niezbędna flaga, jeśli kopiowanie obejmuje cały katalog lub więcej.
  • -V: oznacza gadatliwy. Narzędzie CP wyprowadzi każde działanie, które wykonuje.

Chcesz podążać za symbolicznymi linkami? Dodaj flagę „-L”.

$ cp -lvr

Powiedzmy, że katalog docelowy ma już plik o tej samej nazwie. Jeśli chcesz uniknąć zastąpienia, użyj flagi „-n”. Zapewni to, że w przypadku konfliktu CP nie zastąpi pliku.

$ cp -nv

Jeśli wykonujesz wrażliwą akcję kopiowania/wklejania, 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 pojawia się konflikt.

$ cp -i

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

$ man cp

polecenie mv

Narzędzie MV jest podobne do narzędzia CP. Jednak zamiast kopiowania MV przenosi pliki i katalogi. W porównaniu do CP, jest to prostszy.

Struktura polecenia MV jest podobna do CP.

$ mv

Poruszyć zawartość Dir_a Do dir_a_copy, Uruchom następujące polecenie.

$ mv -v dir_a/ dir_a_copy

Tutaj flaga „-V” jest dla gadatliwy tryb. Jeśli chcesz przenieść tylko zawartość dir_a, użyj zamiast tego. W takim przypadku katalog docelowy musi istnieć wcześniej.

$ mv -v dir_a/* dir_a_copy

Narzędzie MV nie ma wiele do pracy. Aby uzyskać wszystkie dostępne opcje, sprawdź stronę mężczyzny.

$ man mv

Polecenie rsync

Jest to jedno z najbardziej popularnych i potężnych narzędzi do kopiowania plików, używane głównie do tworzenia kopii zapasowych. Utrzymuje możliwość kopiowania plików przez zdalne połączenie. W przeciwieństwie do CP i MV, ma również mnóstwo zaawansowanych opcji kopiowania plików, które oferują najwyższe dostosowanie jego zachowania.

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

Rsync na ogół nie jest wstępnie zainstalowany w żadnej dystrybucji Linux. Jednak ze względu na swoją popularność jest teraz dostępny na wszystkich głównych dystrybucjach Linux. Użyj PKG.org, aby znaleźć pakiet RSYNC dla dystrybucji. Zakładając, że zainstalowałeś rsync, zacznijmy.

Po pierwsze, podstawowa struktura poleceń RSYNC. Jest dość podobny do CP.

$ rsync

Przed rozpoczęciem, oto garść popularnych argumentów rsync.

  • -v: Tryb wetbose, wysyła dowolne działanie na ekranie konsoli.
  • -vv: Tryb wetbose z większą ilością szczegółów
  • -R: Tryb rekurencyjny musi być obecny, jeśli kopiowanie katalogów
  • -z: Skompresuj dane
  • -A: Dane archiwum
  • -N: Suchy bieg, powinien być uruchamiany w połączeniu z trybem wchodzącym. Po prostu wysyła działania, jeśli polecenie miało działać naprawdę
  • -usuwać: Usuń pliki i katalog (-y) w katalogu docelowym, jeśli katalog źródłowy nie zawiera ich już
  • -No-Whole File: Zmusza rsync do użycia algorytmu transmisji delta, bez względu na wszystko. Przydatne w scenariuszach, w których musisz zapewnić najmniejszą ilość zapisu danych.
  • -Usuń plik źródłowy: Usuń pliki źródłowe po skopiowaniu.

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

$ rsync -vr dir_a/ dir_a_copy

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

$ rsync -vv -r dir_a/ dir_a_copy

Teraz sprawdźmy fajną część rsync. Omówiliśmy, w jaki sposób RSync inteligentnie kopiuje tylko modyfikowane pliki, zapisując przepustowość i zapisywanie dysku. Czas sprawdzić to w akcji. W tym przykładzie akcja zostanie wykonana w ramach Dir_a informator.

$ rsync -vv-no-whole plik manekin* dir_b/

Pomimo włączonej transmisji Delta, RSYNC może nie zastosować jej podczas przeprowadzania lokalnego transferu danych.

Teraz sprawdźmy funkcję Dry Run. Przed uruchomieniem jakiegokolwiek polecenia rsync w rzeczywistości zawsze ważne jest, aby je wcześniej przetestować. Tutaj pojawia się suchy bieg. Rsync wyprowadzi to, co się stanie, jeśli polecenie rzeczywiście działało.

$ rsync -anvr dir_a/ dir_a_copy

Rsync może również pracować ze zdalnymi katalogami, nie ma problemu. Wszystko, czego potrzebuje, to właściwe połączenie SSH z skonfigurowanym klawiszem SSH.

$ rsync

Chcesz wykonać operację ruchu? Mówiąc to z perspektywy Rsync, RSYNC skopiuje zawartość katalogu źródłowego, a następnie usunie treść źródła.

$ rsync -v--remove-source-files

Sprawdź wynik operacji.

$ Tree Dir_a
$ Tree dir_a_copy

Końcowe przemyślenia

CP i RSync są najczęstszymi narzędziami, których można użyć do kopiowania plików w folderze na terminalu Linux. Oba są również naprawdę dobre do scenariuszy. Pamiętaj tylko, aby przetestować funkcje przed wdrożeniem.

Cieszyć się!