Читаем Внутреннее устройство Linux полностью

Копирование каталогов может оказаться довольно хитрым занятием, поэтому, если вы не вполне уверены в том, что в итоге произойдет после переноса файлов, используйте комбинацию параметров — nv. Параметр — n дает команде rsync указание о работе в режиме «пробного прогона», то есть выполнить проверку, не копируя в действительности никаких файлов. Параметр — v означает подробный режим, при котором отображаются детали передачи всех вовлеченных файлов:

$ rsync — nva dir host: destination_dir

Отчет будет выглядеть так:

building file list… done

ml/nftrans/nftrans.html

[more files]

wrote 2183 bytes read 24 bytes 401.27 bytes/sec

12.2.2. Создание точной копии структуры каталога

По умолчанию команда rsync копирует файлы и каталоги, не принимая во внимание уже имеющееся содержимое каталога назначения. Например, если вы передали каталог d, который содержит файлы a и b, компьютеру, на котором уже есть файл d/c, то после выполнения команды rsync этот компьютер будет содержать файлы d/a, d/b и d/c.

Чтобы создать точную копию каталога источника, необходимо удалить те файлы в каталоге назначения, которых нет в исходном каталоге (вроде файла d/c в нашем примере). Чтобы выполнить это, используйте параметр — delete:

$ rsync — a — delete dir host: destination_dir

Внимание

Это может оказаться опасным, так как обычно следует проверить каталог назначения на наличие файлов, которые вы можете ненароком удалить. Помните: если вы не уверены в результатах переноса, используйте параметр — n, чтобы выполнить пробный прогон и точно узнать о том, когда команде rsync потребуется удалить файлы.

12.2.3. Использование завершающей косой черты

Будьте особо внимательны при указании кого-либо каталога в качестве источника для команды rsync. Рассмотрим основную команду, с которой мы до сих пор работали:

$ rsync — a dir host: dest_dir

По ее выполнении у вас на хосте будет каталог dir внутри каталога dest_dir. На рис. 12.1 приведен пример того, как команда rsync обычно обрабатывает каталог с файлами a и b. Однако при добавлении косой черты (/) ее поведение радикально меняется:

$ rsync — a dir/ host: dest_dir

В этом случае команда rsync копирует все, что находится внутри каталога dir, в каталог dest_dir хоста, не создавая в действительности каталог dir на хосте назначения. Следовательно, можно рассматривать передачу каталога dir/ как операцию, подобную операции cp dir/* dest_dir в локальной файловой системе.

Допустим, что у вас есть каталог dir, который содержит файлы a и b (dir/a и dir/b). Вы запускаете версию команды с косой чертой, чтобы передать их в каталог dest_dir на хосте:

$ rsync — a dir/ host: dest_dir

По окончании передачи каталог dest_dir будет содержать копии файлов a и b, но не каталога dir. Если же вы опустите конечную косую черту после dir, в каталоге dest_dir окажется копия каталога dir с файлами a и b внутри него. Итак, в результате передачи на удаленном хосте появились бы файлы и каталоги с именами dest_dir/dir/a и dest_dir/dir/b. На рис. 12.2 показано, как команда rsync обрабатывает структуру каталога, приведенную на рис. 12.1, если используется завершающая косая черта.

При передаче файлов и каталогов на удаленный хост случайное добавление символа / в конце пути вызвало бы лишь некоторое неудобство; вам пришлось бы перейти на удаленный хост, добавить каталог dir и поместить в него все переданные файлы. К сожалению, следует быть осторожными, чтобы избежать катастрофы, если соединить завершающую косую черту с параметром — delete, поскольку так можно легко удалить не относящиеся к делу файлы.

Рис. 12.1. Нормальное копирование с помощью команды rsync

Рис. 12.2. Результат использования завершающего слеша в команде rsync

примечание

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

12.2.4. Исключение файлов и каталогов

Одной из важнейших функций команды rsync является возможность исключения файлов и каталогов из операции переноса. Допустим, что вы желаете переместить локальный каталог src на хост host, исключив при этом все, что называется. git. Это можно выполнить так:

$ rsync — a — exclude=.git src host:

Обратите внимание на то, что эта команда исключает все файлы и каталоги с именем. git, поскольку параметр — exclude учитывает шаблон, а не абсолютное имя файла. Чтобы исключить конкретный элемент, укажите абсолютный путь, который начинается с символа /, как показано здесь:

$ rsync — a — exclude=/src/.git src host:

примечание

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных