Подтвердить что ты не робот

Скопируйте файлы, пропуская файлы, которые существуют - Unix

Я хочу взять большую папку (~ 100 ГБ) и скопировать ее в другую папку. Я бы хотел, чтобы он пропускал все существующие файлы (а не папки), поэтому, если /music/index.html не существует, он все равно будет копироваться, даже если каталог /music уже существует.

Я нашел этот, но моя оболочка говорит, что -u не является допустимым аргументом.

Я не знаю, как работает rsync, поэтому, пожалуйста, дайте мне знать, если это лучшее решение.

Спасибо.

4b9b3361

Ответ 1

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

Чтобы игнорировать существующие файлы:

rsync --ignore-existing --recursive /src /dst

Прочитайте руководство и найдите вокруг много, много замечательных примеров. Особенно комбинация с ssh делает rsync отличным инструментом для медленных и ненадежных соединений из-за его опции --partial. Добавьте --verbose, чтобы посмотреть, какие файлы копируются. Обязательно просмотрите множество вариантов, касающихся сохранения разрешений, пользователей и временных меток.

Ответ 2

rsync(1) абсолютно светится, когда источник и получатель находятся на двух разных компьютерах. Это еще лучший инструмент для использования, когда источник и получатель находятся на одном компьютере.

Простое использование будет выглядеть так:

rsync -av /path/to/source /path/to/destination

Если вы уверены, что любые файлы, которые существуют в обоих местах, идентичны, используйте параметр --ignore-existing:

rsync -av --ignore-existing /path/to/source /path/to/destination

Просто для полноты, когда я использую rsync(1) для создания резервной копии в удаленной системе, наиболее предпочтительной командой является:

rsync -avz -P /path/to/source hostname:/path/to/destination

-z запрашивает сжатие (я бы не стал беспокоиться локально, но по более медленной сетевой ссылке это может иметь большое значение), а -P запрашивает --partial и --progress - который будет повторно -пользовать частичную передачу файлов, если он должен быть перезапущен, и будет показывать удобный индикатор выполнения.