Робота з командою cp в Linux: приклади

Хочеш зробити резерв, створити копію важливого скрипта чи швидко продублювати теку — використовуй команду cp.
Що це? cp (copy) — це команда, яка робить копії файлів. Як Ctrl+C, тільки для Linux і трохи серйозніше.
І ми тут, щоб розповісти тобі все про цю команду, тому читай далі.
Копіювання файлів
Основна функція команди cp — копіювання файлів. Її синтаксис — простий, як двері: cp source_file destination_file.
Це створює точну копію файлу source_file і зберігає її як destination_file.
Якщо файл призначення вже є, він буде перезаписаний, якщо не використовувати додаткові параметри.
Приклад:
$ touch f1
$ cp f1 newf1
Ця команда створює файл f1 і копіює його як newf1. Якщо newf1 вже існує, його перезапишуть без попередження. Щоб цього уникнути, додайте опцію -n:
$ cp -n f1 newf1
А як копіювати одразу декілька файлів?
Ну, можна, звісно, копіпастити вручну… Але ми ж не у 2007-му, тому є простіший шлях.
- Спочатку створи новий каталог з назвою dir-1:
$ mkdir dir-1
- Потім скопіюй всі необхідні файли в новий каталог цією командою:
$ cp -v file-1.txt file-2.txt file-3.txt dir-1
Важливо зазначити, що для використання цього синтаксису каталог вже має існувати та бути останнім аргументом команди. Виглядати все має приблизно як на скриншоті.
Використання -iv
Коли копіюєш файли, інколи важливо бачити, які саме зміни відбуваються, і бути впевненим, що не перезапишеш нічого випадково. Для цього є два крутих параметри:
- Параметр -i (інтерактивний) — запитає, чи справді хочеш перезаписати файл.
- Параметр -v (докладний) — покаже, які файли зараз копіюються.
Ось як це виглядає:
$ cp -iv file1 file2
cp: overwrite ‘file2’? y
‘file1’ -> ‘file2’
Якщо ти натискаєш y, файл перезапишеться. Якщо n — перезапису не буде. Це суперкорисно, якраз коли копіюєш багато файлів і хочеш уникнути втрати дорогоцінних даних.
Ще можна зробити ці параметри стандартними у своєму профілі (наприклад, у файлі ~/.bashrc або ~/.zshrc), і тоді cp завжди працюватиме так, як потрібно.
Правильне копіювання каталогів
Щоб правильно скопіювати каталог, використовуй:
$ cp -r anakin padawan
Ця команда створить каталог padawan з усім вмістом каталогу anakin (головне не примкнути до зла). Можна також поєднати -r з -iv, щоб отримати підтвердження перезапису та докладний вивід.
Збереження позначки часу
При копіюванні файлів нові копії отримують поточну позначку часу. Якщо хочеш її зберегти, використовуй опцію -p.
$ cp -p file1 file2
Це збереже час модифікації file2 таким самим, як у file1. Для каталогів використовуй комбінацію -p та -r:
$ cp -pr dir1 dir2
Ця команда створить точну копію каталогу dir2 з усіма мітками часу, що зручно для резервного копіювання та обслуговування.
Копіювання символічних посилань
Щоб копіювати символічні посилання без розриву, застосовуй опцію -l. Автоматично, при копіюванні символічного посилання, воно перетворюється на звичайний файл.
- Приклад символічного посилання:
$ ln -s /etc/passwd anakin
$ ls -l
lrwxrwxrwx 1 user user 11 Mar 31 10:12 anakin -> /etc/passwd
- Копіювання без -l дасть звичайний файл:
$ cp anakin newdir/
$ ls -l newdir/
-rw-r–r– 1 user user 1785 Mar 31 10:20 anakin
- А ось так виглядає копіювання з -l, що зберігає посилання:
$ cp -l anakin newdir/
$ ls -l newdir/
lrwxrwxrwx 1 user user 11 Mar 31 10:12 anakin -> /etc/passwd
І все, отак просто ти впорався з цим.
Як створити резервну копію?
Щоб не втратити важливі файли під час перезапису, можеш додати опцію –backup. Вона створює резервну копію перед тим, як щось замінити. Для зручності обери тип резервування, наприклад numbered — і отримаєш файли з номерами.
$ cp –backup=numbered -v файл-1.txt файл-2.txt
Так нова версія не зітре попередню, а просто допише номер. Зручно, коли експериментуєш або не хочеш втратити оригінал.
Ось яким буде результат, якщо цю команду застосувати кілька разів:
Підсумуємо
Команда cp — твій незамінний напарник у світі Linux. Вона проста, але має купу фішок і ти вже навіть з ними познайомився.
Та ще маємо для тебе дещо круте — у нас є цілий курс з вивчення Linux. Якщо ти працюєш з ним, але ще плаваєш в матеріалі, тоді ознайомлюйся з програмою курсу та біжи реєструватись. Ми чекаємо на тебе!