29

Это довольно забавно, есть много способов, которыми инструменты командной строки Linux значительно превосходят инструменты Windows, но я не нашел эквивалента в Робокопии. Robocopy более универсален, чем cp , и я не могу понять, как делать то, что я хочу, с инструментами Linux.

Конкретный вариант использования состоит в том, что у меня есть две директории с почти одинаковыми файлами, но одна имеет более новые исходные файлы, а другая содержит файлы содержимого, которых нет в другом каталоге, и, возможно, более новые исходные файлы (для веб-сайта). Я хочу скопировать файлы из последнего каталога в первый, добавив новые файлы содержимого и тому подобное, но не перезаписывая новые файлы в целевом каталоге.

Я попытался выяснить, как сделать это в Linux, возможно, в течение получаса, решил, что мне, вероятно, придется изучить скрипты bash или что-то, чтобы делать то, что я хотел, и тогда я понял, что могу просто использовать robocopy. У меня также были некоторые другие требования. Я в основном конвертировал веб-сайт Python (Django) из репозитория SVN в репозиторий Git, и я хотел убедиться, что у меня не было внесенных изменений в SVN. Однако я хотел условно исключить .svn и скомпилированные файлы Python .pyc . Следующая команда robocopy делает именно то, что я хочу:

robocopy source destination /XO /E /XD .svn /XF *.pyc

Есть ли какой-нибудь эквивалент Robocopy в Linux? Я кратко изучил rsync , но мне показалось, что мне нужно настроить сервер rsync, прежде чем пытаться синхронизировать папки.

2 ответа2

38

Похоже, что rsync - это то, что вам нужно. Вам не нужно настраивать rsync-сервер для копирования файлов с одного компьютера на другой. Rsync поддерживает копирование файлов через SFTP (SSH File Transfer), который уже включен большинством Linux-коробок (если не отключен вручную).

См. Зеркальные файлы Lifehacker's в системах с rsync для получения более подробной информации:

Rsync может выполнить эту задачу, независимо от того, хотите ли вы сделать резервную копию данных, безопасно распространять файлы или зеркально отразить ваши рабочие документы через Интернет из офиса в дом, между компьютерами в локальной сети или с компьютера на веб-сервер. Сегодня мы будем использовать rsync для зеркалирования папок между Mac и ПК через безопасное соединение в командной строке.

Rsync является бесплатным (как в речи) и кроссплатформенным, то есть он синхронизирует файлы между операционными системами (Windows/Cygwin, Mac OS, Linux); он работает через ssh, поэтому он зашифрован и защищен; в отличие от FTP он является инкрементным, поэтому передаются только части измененных файлов, а не целые файлы, что делает его похожим на Speedy Gonzalez; и тот факт, что это командная строка делает его сценарием и легко автоматизировать.

14

rsync скопирует файлы из одного каталога в другой каталог на том же компьютере, что и robocopy. Вот команда rsync, которая эквивалентна вашей команде robocopy:

rsync -auv --exclude '.svn' --exclude '*.pyc' source destination

Это рекурсивно скопирует источник в место назначения и исключит более старые файлы, а также каталоги / файлы '.svn' и '* .pyc'.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .