Как скопировать каталог и его содержимое в новое место под новым именем каталога?
Я новичок в командной строке 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