Как я могу скопировать содержимое папки в другую папку в другом каталоге, используя терминал?
Я пытаюсь скопировать содержимое папки в другую папку в другом каталоге с помощью терминала.
Может ли кто-нибудь предоставить мне пример синтаксиса командной строки, необходимого для достижения этой цели?
8 ответов
Вы можете скопировать содержимое папки /source
в другую существующую папку /dest
с командой
cp -a /source/. /dest/
-a
Опция - это улучшенная рекурсивная опция, которая сохраняет все атрибуты файла, а также сохраняет символические ссылки.
.
в конце пути к исходному cp
синтаксис, позволяющий копировать все файлы и папки, в том числе скрытые.
Альтернатива rsync
rsync -r source/ destination
Преимущества rsync:
После начальной синхронизации он будет копировать только те файлы, которые были изменены.
Вы можете использовать его по сети, что удобно для файлов в $HOME, особенно для файлов конфигурации.
Допустим, у вас есть папка с именем folder1 в вашем ~
Внутри folder1 находится 1 файл с именем file1 и 2 папки с именами sub1 и sub2, в каждой из которых находятся другие файлы и папки.
Чтобы скопировать все содержимое ~/folder1
в ~/new_folder1
вы бы использовали
cp -r ~/folder1/. ~/new_folder1
new_folder1
будет содержать все файлы и папки из folder1
,
cp
команда для копирования с использованием терминала, -r
делает это рекурсивно (так, текущий каталог + дополнительные каталоги внутри текущего) ~/folder1
является исходной папкой, ~/new_folder1
является папкой назначения для файлов / папок внутри источника.
Простой пример
Скопируйте каталог dir_1 и его содержимое (_files_) в каталог dir_2:
cp -r ./dir_1 ./dir_2
# or
cp -r ./dir_1/ ./dir_2/
# Results in: ./dir_2/dir_1/_files_
Скопируйте содержимое (_files_) только dir_1 в каталог dir_2:
cp -r ./dir_1/. ./dir_2
# or
cp -r ./dir_1/. ./dir_2/
# Results in: ./dir_2/_files_*
_files_
является заполнителем для фактических файлов, расположенных в каталоге.
Проверьте это http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ для получения дополнительной информации о копировании папки. Надеюсь это поможет.
cp Command
cp
команда Linux для копирования файлов и каталогов Синтаксис выглядит следующим образом:
cp source destination
cp dir1 dir2
cp -option source destination
cp -option1 -option2 source destination
В этом примере копия /home/vivek/letters
папка и все ее файлы в /usb/backup
каталог:
cp -avr /home/vivek/letters /usb/backup
Куда,
-a
: Сохраните указанные атрибуты, такие как каталог, режим файла, владелец, временные метки, если возможно, дополнительные атрибуты: контекст, ссылки, xattr, все.
-v
Объясните, что делается.
-r
: Копировать каталоги рекурсивно. пример
Скопируйте папку с именем / tmp / conf в / tmp / backup:
$ cp -avr /tmp/conf/ /tmp/backup
Этот код с флагом "-R" полностью копирует все содержимое " folder1" в существующую "folder2" :
cp -R folder1/. folder2
Флаг "-R" также копирует символические ссылки , но флаг "-r" пропускает символические ссылки , поэтому флаг "-R" лучше, чем флаг "-r" .
- Последний GNU Grep 3.7:
-R, --dereference-recursive
For each directory operand, read and process all files in that directory,
recursively, following all symbolic links.
-r, --recursive
For each directory operand, read and process all files in that directory,
recursively. Follow symbolic links on the command line, but skip symlinks
that are encountered recursively. Note that if no file operand is given,
grep searches the working directory. This is the same as the
‘--directories=recurse’ option.
Мне нравится эта команда
rsync -av --progress ~/code/project-source/. ~/code/project-destination --exclude .git --exclude node_modules
Некоторые из наиболее часто используемых параметров команды rsync перечислены ниже:
- -v, –verbose: подробный вывод
- -q, –quiet: запретить вывод сообщения
- -a, –archive: архивировать файлы и каталог при синхронизации ( -an равно следующим параметрам -rlptgoD)
- -r, –recursive: рекурсивно синхронизировать файлы и каталоги
- -b, –backup: сделать резервную копию во время синхронизации
- -u, –update: не копировать файлы из источника в место назначения, если файлы назначения новее
- -l, –links: копировать символические ссылки как символические ссылки во время синхронизации
- -n, –dry-run: выполнить пробный запуск без синхронизации
- -e, –rsh= КОМАНДА: указать удаленную оболочку для использования в rsync
- -z, –compress: сжимать данные файла во время передачи
- -h, –human-readable: отображать выходные числа в удобочитаемом формате.
- –Progress: показать прогресс синхронизации во время передачи
Если есть две папки: (с правом записи)
drwxr-xr-x 4 vimal vimal 4096 Sep 9 12:17 .
drwxr-xr-x 3 root root 4096 Aug 18 14:35 ..
drwxrwxrwx 6 vimal vimal 4096 Sep 9 12:15 DATA
drwxrwxrwx 7 vimal vimal 4096 Sep 9 12:15 PORTAL
Если вы находитесь в папке с именем PORTAL, куда вы хотите скопировать все содержимое другой папки, скажем, DATA на том же уровне, то вы будете делать
vimal@vimal-D3H:/var/www/html/PORTAL$ cp -a ../DATA/. .
Вы должны заметить 2 точки. Последняя точка говорит, что копия здесь, в данной папке
а также
один следующий /DATA/. говорит, что все СОДЕРЖАНИЕ внутри папки DATA для копирования, а не сама папка DATA.
Если вы удалите этот трейлинг "." от / ДАННЫЕ /
тогда вся папка DATA будет скопирована в ПОРТАЛ (откуда вы копируете).