Копирование нескольких каталогов с помощью одной команды
Системное администрирование и разработка должны обеспечивать надлежащее администрирование файлов и каталогов. Одним из таких способов, который действительно эффективен, является совместное копирование нескольких каталогов, что на самом деле экономит огромное количество времени и снижает вероятность ошибок, которые могут быть связаны с выполнением их по очереди. Независимо от того, занимаетесь ли вы резервным копированием данных, миграцией проекта или просто наводите порядок в юниверсе, это то, что вы должны уметь делать, чтобы получить максимальную отдачу от своего рабочего процесса.
В этой статье представлено несколько способов копирования нескольких каталогов с помощью одной команды в Unix-подобных системах. Мы рассмотрим простые способы копирования с помощью команды cp, более гибкие способы с использованием циклов командной строки и продвинутые способы с использованием rsync. Каждый из них обладает множеством преимуществ - от простоты до улучшения функциональности и производительности. Это позволяет вам выбрать оптимальное решение для ваших конкретных потребностей и, таким образом, точно выполнять задачи, связанные с управлением файлами. Когда у вас есть возможность копировать сотни каталогов одной командой, это очень большое преимущество для человека, которому приходится работать с огромными объемами данных, или для людей со сложной структурой каталогов. Это руководство содержит пошаговые инструкции, практические примеры и ответы на распространенные вопросы, которые помогут вам освоить этот важный аспект управления файлами.
Основные термины
- Интерфейс командной строки (CLI): CLI, сокращение от «Интерфейс командной строки», представляет собой текстовый интерфейс, используемый для взаимодействия с операционной системой.
- Каталог : Каталог. В файловой системе каталог — это папка, содержащая файлы или другие каталоги. Каталоги позволяют организовывать файлы в древовидную структуру.
- Копировать (cp): эта команда используется для копирования файлов и каталогов из одного места в другое в Unix-подобных операционных системах. Параметр -r или –recursive Копирует каталоги рекурсивно вместе со всеми файлами и подкаталогами.
- Подстановочный знак : специальные символы * и ? используются в именах файлов и каталогах для обозначения нуля или нескольких символов. Подстановочные знаки упрощают описание нескольких файлов или каталогов.
- Рекурсивное копирование: это процесс копирования всех файлов и подкаталогов из заданного каталога вместе со структурой каталогов.
- Shell Script : это сценарий, который запускается оболочкой или интерпретатором командной строки операционной системы. Сценарий оболочки помогает автоматизировать набор повторяющихся работ, записывая базовую команду только один раз.
- Для цикла : в сценарии оболочки это оператор потока управления, который помогает многократно выполнять код в зависимости от заданного условия. Таким образом, что касается копирования в каталогах, цикл for может проходить по списку каталогов и один за другим копировать их все.
- rsync : утилита командной строки, которая реплицирует и синхронизирует файлы и каталоги между двумя расположениями. Он очень мощный и эффективен при отправке только измененных частей файла.
- Путь : это уникальный адрес, присвоенный файлу или каталогу в файловой системе. Абсолютный путь — это путь, который указывает полное местоположение каталога, начиная с корневого каталога. С другой стороны, относительный путь указывает местоположение относительно рабочего каталога.
- Каталог назначения : целевой каталог, в который копируются файлы или каталоги. Это конечное место для скопированных данных.
Способ 1: использование команды cp с подстановочными знаками
Шаг 1: Откройте терминал
- Запустите приложение терминала в вашей Unix-подобной операционной системе.
Шаг 2. Перейдите в домашний каталог.
- Используйте команду cd, чтобы изменить каталог на родительский каталог, содержащий каталоги, которые вы хотите скопировать.
cd /path/to/directory
Шаг 3. Скопируйте несколько каталогов, используя подстановочные знаки
- Используйте команду cp с опцией -r (рекурсивный) и подстановочными знаками (*), чтобы скопировать несколько каталогов.
cp -r dir1 dir2 dir3 /path/to/destination/
- Замените dir1, dir2, dir3 фактическими именами каталогов, которые вы хотите скопировать. Настройте /path/to/destination/ на целевой каталог, в который вы хотите скопировать эти каталоги.
- Здесь мы видим, что dir1, dir2 и dir3 были скопированы из домашнего каталога в My_directory.
Метод 2: использование цикла For в сценарии оболочки
Шаг 1. Перейдите в домашний каталог.
- Используйте команду cd, чтобы изменить каталог на родительский каталог, содержащий каталоги, которые вы хотите скопировать.
cd /path/to/parent-directory
Шаг 2. Создайте сценарий оболочки
- Используйте текстовый редактор (например, nano, vim, gedit) для создания сценария оболочки. Например, создайте файл с именем copy_directories.sh:
sudo vi copy_directories.sh
Шаг 3. Напишите цикл For
- Внутри скрипта напишите цикл for для обхода каждого каталога и копирования его в место назначения:
#!/bin/bash mkdir -p /my_directory # Loop through each directory and copy it to /my_directory for dir in dir1 dir2 dir3; do echo “Copying $dir to /my_directory…” cp -rv “$dir” /my_directory done
- Замените dir1, dir2, dir3 фактическими именами каталогов, которые вы хотите скопировать. Настройте /path/to/destination/ на целевой каталог, в который вы хотите скопировать эти каталоги.
Сделайте скрипт исполняемым
Сделайте скрипт исполняемым с помощью команды chmod:
sudo chmod +x copy_directories.sh
Шаг 4. Запустите сценарий
- Выполните скрипт для копирования каталогов:
./copy_directories.sh
Способ 3: использование команды rsync
Шаг 1. Перейдите в домашний каталог.
- Используйте команду cd, чтобы изменить каталог на родительский каталог, содержащий каталоги, которые вы хотите скопировать.
cd /path/to/Home-directory
Шаг 2. Используйте rsync для копирования каталогов:
- Используйте команду rsync с опцией -a (архив) для копирования нескольких каталогов:
rsync -a dir1 dir2 dir3 /path/to/destination/
Заключение
Для системного администратора и разработчика критически важно иметь возможность выполнять несколько копий каталога с помощью одной команды. Это упрощает рабочий процесс, сокращает затрачиваемое время и, следовательно, может свести к минимуму ошибки, которые могут быть распространены во время повторяющегося процесса последовательного копирования каталогов один за другим. Изучите несколько способов решения сложных задач управления файлами с помощью команды cp, подстановочных знаков, циклов оболочки и использования команды rsync.
В этой статье вы познакомитесь с пошаговым руководством по различным стилям копирования нескольких каталогов таким образом, чтобы удовлетворить потребности и предпочтения всех людей, начиная с простых методов и заканчивая локальными копиями, а затем переходя к более сложным решениям для синхронизации каталогов между собой. системы. Описанные здесь методы приближают человека к свету, когда ему или ей необходимо выбрать наиболее подходящий инструмент для работы.
Понимание и применение этих методов гарантирует, что ваши задачи по управлению файлами будут выполняться эффективно и правильно, что повысит вашу производительность и снизит вероятность ошибок. При интеграции в повседневную работу эти методы позволяют лучше управлять данными и поддерживать файловые системы в аккуратном и актуальном виде.
Копирование нескольких каталогов одной командой – часто задаваемые вопросы
Могу ли я скопировать скрытые каталоги этими методами?
Да, это либо упоминается в команде, либо с использованием подстановочных знаков скрытые каталоги будут скопированы. Пример: cp -r .* /пункт назначения/.
В чем разница между cp и rsync?
В основном cp используется для копирования файлов, тогда как, с другой стороны, rsync оснащен такими функциями, как синхронизация, отображение прогресса и эффективная передача данных.
Как сохранить права доступа к файлам и временные метки?
Используйте -p с cp. Разрешения, метки времени и другие атрибуты не будут потеряны. rsync с аргументом -a делает то же самое.
Могу ли я использовать его для копирования каталогов в другие системы?
Конечно же, это блестящее применение rsync. Более того, вы можете скопировать все деревья каталогов на удаленный компьютер через SSH. Пример: rsync -avz /source/user@remote:/destination/.
Что произойдет, если каталог уже существует в пункте назначения?
Если каталог уже существует, его содержимое будет объединено с содержимым скопированного каталога. Существующие файлы с таким же именем будут перезаписаны.