Как мога да копирам файлове в папка в друга папка на терминал на Linux

How Can I Copy Files Folder Into Another Folder Linux Terminal



Когато имате нужда от копиране на съдържанието на директория в друга, в случая с Linux, на ваше разположение има много инструменти. Коя да използвам? Зависи от ситуацията и личните предпочитания. В тази статия ще разгледаме начините, по които можете да копирате съдържанието на файлове от една папка в друга в терминала. Той ще включва някои от популярните избори за различни ситуации.

Копиране на файлове в терминал

Копирането на съдържанието на една директория в друга е много проста задача. Имате обаче много възможности да го направите. Linux е благословен с множество инструменти за манипулиране на файлове и директории чрез различни действия.







Всички стъпки са демонстрирани в Ubuntu 18.04.1. Първо, нека създадем шепа фиктивни файлове, с които да работим.



$mkdir -vdir_A



Сега нека създадем фиктивни файлове с докосване.





$докосванеманекен{1..10}

Нека създадем друга папка в dir_A с шепа фиктивни файлове.



$mkdir -vdir_B
$докосванеманекен{1..10}

Сега цялата структура на директорията dir_A изглежда така.

$дървоdir_A

Cp команда

The cp command е най -често срещаният инструмент за копиране на файлове. Това е инструмент, който се предлага по подразбиране с всяка система на Linux. Копирането на файлове и директории е единствената цел на cp. Той поддържа широк спектър от функции.

Това е основната структура на cp команда.

$cp <настроики> <източник> <дестинация>

Например, нека направим копие на манекен 1 файл с името манекен1_копиране .

$cpdummy1 dummy1_copy

Сега нека опитаме да копираме няколко файла наведнъж. За такава операция cp изисква местоназначението да бъде директория. Тук ще използвам заместващ израз, за ​​да грабна всичко манекен файлове и ги поставете в ~/Изтегляния директория.

$cpманекен*~/Изтегляния

Какво ще кажете за копиране на директория?

$cp -vrdir_A dir_A_copy

Тук използвахме два различни флага. Нека да разгледаме набързо тях.

  • -r: Значи за a рекурсивен копиране (включително всички скрити файлове). Трябва да имате флаг, ако копирането включва цяла директория или повече.
  • -v: Стои за многословен . Инструментът cp ще извежда всяко едно действие, което извършва.

Искате ли да следвате символичните връзки? Добавете флага -L.

$cp -Лвр <източник> <дестинация>

Да приемем, че директорията на местоназначението вече има файл със същото име. Ако искате да избегнете презапис, използвайте флага -n. Това ще гарантира, че в случай на конфликт, cp няма да презапише файла.

$cp -нв <източник> <дестинация>

Ако извършвате чувствително действие копиране/поставяне, по -добре е да имате най -финия контрол върху това, което се случва, нали? В такъв случай използвайте флага -i. Той означава интерактивен режим, при който cp ще иска потвърждение всеки път, когато възникне конфликт.

$cp <източник> <дестинация>

Ако се интересувате повече, страницата man винаги е една от най -добрите документации. Научете повече за cp.

$човек cp

команда mv

Инструментът mv е подобен на инструмента cp. Въпреки това, вместо да копира, mv премества файлове и директории. В сравнение с cp, той е по -прост.

Командната структура на mv е подобна на cp.

$mv <опция> <източник> <дестинация>

За да преместите съдържанието на dir_A да се dir_A_copy , изпълнете следната команда.

$mv -vdir_A/dir_A_copy

Тук флагът -v е за многословен режим. Ако искате да преместите само съдържанието на dir_A, използвайте следното вместо това. В този случай целевата директория трябва да съществува предварително.

$mv -vdir_A/ *dir_A_copy

Инструментът mv няма много работа. За всички налични опции разгледайте страницата man.

$човек mv

Команда Rsync

Това е един от най -популярните и мощни инструменти за копиране на файлове, използван най -вече за архивиране. Той притежава възможност за копиране на файлове през отдалечена връзка. За разлика от cp и mv, той също идва с много разширени опции за копиране на файлове, които предлагат максимално персонализиране на поведението му.

Rsync е известен най-вече със своя алгоритъм за делта-трансфер, който драстично намалява количеството данни, които трябва да се обменят. В случай на дистанционно синхронизиране, това спестява много честотна лента.

Rsync обикновено не е предварително инсталиран в нито един дистрибутор на Linux. Въпреки това, поради своята популярност, сега той е достъпен за всички основни дистрибуции на Linux. Използвайте Pkgs.org за да разберете пакета rsync за вашия дистрибутор. Ако приемем, че сте инсталирали rsync, нека започнем.

Първо, основната структура на командите на rsync. Това е доста подобно на cp.

$rsync<настроики> <източник> <дестинация>

Преди да започнете, ето няколко популярни аргумента rsync.

  • -v : Подробен режим, извежда всяко действие, което се извършва на екрана на конзолата.
  • -vv : Подробен режим с повече подробности
  • -r : Рекурсивен режим, трябва да присъства, ако копирате директории
  • : Компресиране на данни
  • -да се : Архивиране на данни
  • : Работа на сухо, трябва да се изпълнява в комбинация с подробен режим. Просто извежда действията, ако командата трябва да се изпълни реално
  • -Изтрий : Изтрийте файла (ите) и директорията (ите) в целевата директория, ако директорията източник не ги съдържа повече
  • -не-цял-файл : Принуждава rsync да използва своя алгоритъм за делта предаване, независимо от всичко. Полезно в сценарии, при които трябва да осигурите най -малкото количество запис на данни.
  • –Remove-source-file : Изтрийте изходните файлове след копирането.

Нека ги проверим в действие. Първо, копие от директорията. Изпълнете следната команда.

$rsync-vrdir_A/dir_A_copy

За по -подробно извеждане, нека използваме флага -vv.

$rsync-vv -rdir_A/dir_A_copy

Сега нека разгледаме страхотната част на rsync. Обсъдихме как rsync интелигентно копира само променените файлове, спестявайки честотна лента и запис на диск. Време е да го проверите в действие. В този пример действието ще се извърши в рамките на dir_A директория.

$rsync-vv --no-whole-fileманекен*dir_B/

Въпреки активираното делта предаване, rsync може да не го приложи, когато извършвате локален пренос на данни.

Сега нека разгледаме функцията за работа на сухо. Преди да изпълните действително някоя команда rsync, винаги е важно да я тествате предварително. Тук идва сухият ход. Rsync ще изведе какво ще се случи, ако командата действително се изпълни.

$rsync-anvrdir_A/dir_A_copy

Rsync може да работи и с отдалечени директории, няма проблем. Всичко, от което се нуждае, е подходяща SSH връзка с конфигурирани SSH ключове.

$ rsync<опция> <local_dir>
<потребителско име> @<remote_host>:<destination_dir>

Искате ли да извършите операция за преместване? За да постави това в перспективата на rsync, rsync ще копира съдържанието на директорията източник и след това ще изтрие съдържанието на източника.

$rsync-v --remove-source-files <източник> <дестинация>

Вижте резултата от операцията.

$дървоdir_A

$дървоdir_A_copy

Последни мисли

Cp и rsync са най -често срещаните инструменти, които можете да използвате за копиране на файлове в папка на терминала на Linux. И двете са наистина добри за скриптове. Просто не забравяйте да тествате функциите преди внедряването.

Наслади се!