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

rsync error: error in rsync protocol data stream (code 12) at io.c(165)

Оно говорит о том, что удаленная оболочка не может отыскать команду rsync в своей системе. Если команды rsync нет в удаленном пути, но в системе она есть, используйте команду —rsync-path=path, чтобы вручную указать ее местоположение.

Если на удаленном хосте у вас другое имя пользователя, добавьте к имени хо­ста параметр user@, в котором user является вашим именем пользователя для этого хоста:

$ rsync file1 file2 ... user@host:

Если вы не укажете дополнительные параметры, команда rsync скопирует только файлы. В действительности, если вы укажете только те параметры, которые были описаны к настоящему моменту, и попытаетесь указать параметр dir как аргумент, вы получите такое сообщение:

skipping directory dir

Чтобы передать всю иерархию каталога — со всеми символическими ссылками, правами доступа, режимами файлов и устройствами, — используйте параметр -a. Более того, если вы желаете выполнить копирование в какое-либо место, не явля­ющееся вашим домашним каталогом на удаленном хосте, укажите это назначение после названия удаленного хоста:

$ rsync -a dir host:destination_dir

Копирование каталогов может оказаться довольно хитрым занятием, поэтому, если вы не вполне уверены в том, что в итоге произойдет после переноса файлов, используйте комбинацию параметров -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, поскольку так можно легко удалить не относящиеся к делу файлы.

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

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

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT