Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>shell utils network scp rsync ssh}} ====== Примеры работы с данными на локальной машине ====== ===== Простое копирование фай ===== В принципе, команда ср отлично выполняет свою функцию, за исключением небольшой прихоти -- при копировании больших файлов хотелось бы знать сколько времени осталось до завершения операции (т.е. всего-навсего нужно вывести прогресс операции копирования). Данную задачу можно решить несколькими способами: 1) Использовать команду scp (потребует ввода пароля пользователя, а также ввода полного пути к каталогам): scp -r <что копировать> localhost:<куда копировать> 2) Использовать команду rsync с ключом --progress: rsync --progress -av <что копировать> <куда копировать> При копировании каталогов (а не файлов) в последнем случае следует обратить внимание на знак "/" замыкающий имя каталога-источника, т.к. команда rsync будет интерпретировать результат по-разному: rsync --progress -av <каталог-источник> <каталог-назначения/> rsync --progress -av <каталог-источник/> <каталог-назначения/> Наличие завершающих слешей "/" обязательно, иначе результат копирования будет содержать корневую папку <каталог-источник> внутри <каталога-назначения>. Копирование файла а из dir1 в dir2: scp /home/dir1/a localhost:/home/dir2/ Копирование каталога из dir1 в dir2: scp -r /home/dir1/ localhost:/home/dir2/ Копирование файла а из dir1 в dir2: rsync --progress -av ~/dir1/a ~/dir2/ Копирование файлов из dir1 в dir2: rsync --progress -av ~/dir1/ ~/dir2/ Копирование самой директории dir1 (со всем содержимым) в dir2: rsync --progress -av ~/dir1 ~/dir2/ ===== Синхронизация каталогов ===== Точная копия каталогов (удаление всех файлов из dir2, которых нет в dir1): rsync --delete -av ~/dir1/ ~/dir2/ Исключить каталоги, синхронизация которых не требуется (например, каталог dir3 находящийся в dir1 при копировании последнего в dir2 будет пропущен): rsync -av ~/dir1/ --exclude="./~dir3/" ~/dir2/ Двусторонняя синхронизация (объединить содержимое dir1 и dir2) rsync -av ~/dir1/ ~/dir2/ && rsync -av ~/dir2/ ~/dir1/ ===== Работа с удаленной машиной ===== Скопировать полностью структуру фалов и папок из /home/data1/ в /home/other/data2/: rsync -av /home/data1/ /home/other/data2/ Наличие завершающих слешей в /home/data1/ файла обязательно, иначе результат копирования будет содержать корневую папку data1/ в папке /home/other/data2/. Выполнить копирование на удалённую систему по ssh: rsync -rvz /home/data1/ user@server.com:/home/data1/ Задать альтернативный порт ssh: rsync -rvz -e 'ssh -p 10022' /home/data1/ user@server.com:/home/data1/ Исключить некоторые файлы: rsync -rvz /home/data1/ --exclude="tmp/*" --exclude="*~" user@server.com:/home/data1/ Не учитывать пользователя, группу и права при передачи: rsync -rvz --no-p --no-o --no-g /home/data1/ user@server.com:/home/data1/ Описание опций $-a, --archive – архивный режим, включает рекурсивное копирование и сохранение прав и владельца (ключи rlptgoD) $-t, --times – обновлять время модификации файла на приёмной стороне. При отсутствии этой опции или -a становиться неэффективной оптимизация передачи по времени изменения файлов $-c, --checksum – использование сверки по контрольным суммам, а не по времени изменения и размеру $--size-only – проверка только по размеру файлов $-r – рекурсивный режим (копирование всех подпапок и файлов в них) $-v – подробные вывод операций $-z – компрессия данных при передачи $-p – сохранять права $--del – удалить файлы в папке назначения которых нет в источнике (точная копия) $-R – использовать относительные пути при создании символических ссылок $--numeric-ids – не транслировать имена владельца и группы в цифровые UID и GID, оставить на удалённой стороне номера как есть $--size-only – использование для сверки только размер файлов $--bwlimit=KBPS – ограничение пропускной способности, чтобы не забивать канал (Kbit/s) $--ignore-errors – продолжать копирование и удаление после появления ошибок $-h – вывод результатов с человеко-читаемом формате $-A, --acls – сохранение списков ACL $-H, --hard-links – сохранение жестких ссылок $-S, --sparse – оптимизировать разреженные файлы $-x, --one-file-system – не выходить за пределы текущей точки монтирования $--exclude= СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal