Как скопировать каталог и его содержимое в новое место под новым именем каталога?

Я новичок в командной строке Linux и сейчас пытаюсь разобраться с командой copy.

Может кто-нибудь сказать мне, возможно ли скопировать каталог с его подкаталогами и связанными файлами в новый каталог с новым именем, например, directory_backup?

Спасибо за любую помощь заранее

7 ответов

Ты используешь -r (скопировать рекурсивно) и указать новое имя

cp -r /path/to/directory /path/to/location/new-name

заменить реальными путями... например скопировать stuff из моего домашнего каталога в существующий каталог backup и назовите новый каталог stuff-backup (если этот каталог уже существует, обратите внимание, что stuff будут скопированы в него, а не перезаписать его).

cp -r ~/stuff ~/backup/stuff-backup

~ это ярлык для вашего домашнего каталога /home/$USER или же /home/zanna в моем случае. Вы можете опустить его, если текущим рабочим каталогом является ваш домашний каталог - вы можете увидеть это в приглашении

zanna@monster:~$
              ^--the ~ here is where I am - home!

Вы можете добавить -v подробный флаг, чтобы сделать cp сообщать о каждой выполняемой копии...

$ cp -vr stuff backup/stuff-backup
'stuff/thing1' -> 'backup/stuff-backup/thing1'
'stuff/thing2' -> 'backup/stuff-backup/thing2
...

Команда, которая вам нужна, просто cp что означает "копия".

Вы можете использовать его, например, с одним из следующих синтаксисов:

cp SOURCEFILE TARGETFILE
cp SOURCEFILE TARGETDIRECTORY

Первый вариант позволяет указать новое имя файла для целевого файла, а второй вариант создает копию с тем же именем в целевом каталоге. Конечно, вы должны сначала заменить заполнители заглавными буквами действительными путями.

Тем не мение, cp по умолчанию работает только с файлами, а не с каталогами. Чтобы заставить его скопировать полный каталог со всем его содержимым рекурсивно, вы должны добавить -r опция:

cp -r SOURCEDIRECTORY TARGETDIRECTORY

Вы можете узнать больше о cp команда, набрав man cp в вашем терминале.

Вы можете использовать приведенную ниже команду для копирования каталога из одного места в другое.

cp -Rvp /home/edmuntu/data /home/edmuntu/mydata/

Объяснение команды:

  • -R = копировать каталоги рекурсивно
  • v = объяснить, что делается
  • p = Это поможет вам сохранить ваше разрешение и право собственности с отметками времени

В качестве альтернативы обычно полезной команде cp вы можете использовать rsync, который имеет дополнительное преимущество репликации разрешений / временных меток исходной структуры каталогов:

rsync -av dir/ newdir

-a архив -v многословный

обратите внимание на косую черту после исходного каталога.

cp это команда, которая выполняет функцию, которую вы ищете. Это означает копирование, и оно делает именно это. Команда, которая будет работать для вас в этой ситуации,

cp -R source/ destination/

Это скопировало бы source/ папка и все ее подкаталоги в destination/,

Если destination/ не существует, он будет создан.

-R флаг обозначает рекурсивный, который говорит cp скопировать все подкаталоги.

Мне легче перейти в каталог, из которого я сначала копирую. Для этого примера перейдите в каталог, который каждый назвал /boot, Любой может скопировать и вставить команды ниже в свой терминал.

cd /boot
sudo mkdir /boot_backup
sudo cp -r . /boot_backup
du /boot_backup -h

752K    /boot_backup/extlinux/themes/debian-wheezy
756K    /boot_backup/extlinux/themes
832K    /boot_backup/extlinux
2.5M    /boot_backup/grub/i386-pc
20K     /boot_backup/grub/locale
2.3M    /boot_backup/grub/fonts
7.2M    /boot_backup/grub
565M    /boot_backup

Для cp команда текущего каталога определяется как . какой /boot каталог мы изменили. -r опция делает рекурсивным включение всех подкаталогов.

Чтобы убедиться, что это работает, запустите du перечислить все подкаталоги и общие размеры файлов в новом каталоге /boot_backup в этом случае.

После завершения этого прогона используйте: sudo rm -r /boot_backup удалить новый каталог и его подкаталоги.

Как правило, вы хотите сохранить права доступа к файлу при создании копии, а не новый набор разрешений на создание по умолчанию. Это означает использование флага -a для cp.

cp -a file filenew

Используя следующую команду для копирования из каталога в другой каталог:

$ cp -r /source_directory /destination_directory
Другие вопросы по тегам