Я хотел бы поддерживать зеркальные копии многих файлов и каталогов с помощью cp, но не могу заставить его работать (похоже на MS XCOPY с переключателями)

Я пытаюсь скопировать SOURCE в DESTINATION, чтобы DESTINATION была идентична SOURCE.

Обратите внимание, что SOURCE - это 89 ГБ с 26 тыс. файлов и сотнями папок, поэтому нецелесообразно делать полную копию, когда изменились только 5 или 10 файлов.

Я понимаю, что можно использовать приложение для инкрементного резервного копирования, но мне нужно, чтобы файлы были непосредственно доступны и редактируемы, поскольку место назначения - это жесткий диск USB, подключенный к другому компьютеру (также работающему под управлением Ubuntu).

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

Я подумал, что проблема может быть связана с именами папок и файлов, которые содержат пробелы. Если бы я создавал эти папки и файлы, я бы использовал _ вместо " ", но это не вариант. Все файлы можно использовать в приложениях Ubuntu. Я использовал переключатель -v, но ничего не печатается.

В Ubuntu 20.04 я ввожу следующее в каталоге SOURCE:

cp "*.*" -i -r -u -v /media/kevin/'MyDocs Backup'/Documents

Я также пробовал использовать явное SOURCENAME, но это дает еще меньше результата.

Если это поможет передать мой вопрос, эквивалент XCOPY из каталога:

XCOPY "*.*" K:\Documents /d /s /c
0
задан 1 June 2021 в 09:47

1 ответ

Используйте rsync :

Rsync - это быстрый и чрезвычайно универсальный инструмент для копирования файлов. Он может копировать локально, на / с другого хоста через любую удаленную оболочку или на / с удаленного демона rsync. Он предлагает большое количество опций, которые контролируют каждый аспект его поведения и позволяют очень гибко определять набор копируемых файлов. Он известен своим алгоритмом дельта-передачи, который уменьшает объем данных, отправляемых по сети, отправляя только различия между исходными файлами и существующими файлами в месте назначения. Rsync широко используется для резервного копирования и зеркалирования, а также в качестве улучшенной команды копирования для повседневного использования.

rsync -av SOURCE DESTINATION
  • -a означает «режим архивации», который представляет собой совокупность нескольких других опций

    «режим архива [...] гарантирует, что символические ссылки, устройства, атрибуты, разрешения, права собственности и т. Д. Сохраняются в передача. ")

  • -v означает" подробный ", поэтому мы видим статус на терминале, что было скопировано.

Дополнительные сведения и параметры см. В man rsync .


Обратите внимание на разницу между SOURCE и SOURCE / :

Завершающая косая черта на источнике изменяет это поведение, чтобы избежать создания дополнительного уровня каталога в месте назначения. Вы можете рассматривать конечный / в источнике как означающий «копировать содержимое этого каталога», а не «копировать каталог по имени»

4
ответ дан 28 July 2021 в 11:35

Другие вопросы по тегам:

Похожие вопросы: