Я хочу использовать rsync для объединения этих нескольких папок в одну папку. Каждая папка содержит уникальные имена файлов, поэтому нет никаких конфликтов с точки зрения имен файлов.

Мои папки в настоящее время имеют следующую структуру:

Project
  -Folder 1
    -File 1
  -Folder 2
    -File 2
  -Folder 3
    -File 3

Project 1
  -Folder 1
    -File 4
  -Folder 2
    -File 5

Project 2
  -Folder 3
    -File 6

Project 3
  -Folder 4
    -File 7
  -Folder 5
    -File 8

Я хочу добиться следующего:

Project 
Folder 1
  -File 1
  -File 4
Folder 2
  -File 2
  -File 5
Folder 3
  -File 3
  -File 6
Folder 4
  -File 7
Folder 5
  -File 8

1 ответ1

0

Я не проверял это, но вы можете попробовать --max-delete = 0 как вариант для экспериментов. Существуют очевидные проблемы (например, если ваш исходный каталог удаляет файл, он никогда не будет удален в целевой папке).

На вашей позиции я бы серьезно подумал либо о scp вместо rsync (если вы делаете только одну передачу), либо о создании параллельного каталога с использованием жестких ссылок.

Это будет выглядеть примерно так (опять же, экспериментируйте и тестируйте; я давно не запускал ни одну из этих команд):

Из вашей рабочей / синхронизирующей директории:

rsync --inplace A/Project ./Project    # Perform all of the syncs
rsync --inplace B/Project1 ./Project1
rsync --inplace C/Project2 ./Project2
rsync --inplace D/Project3 ./Project3
mkdir -p /tmp/combination/Project      # Create the destination dir if needed.
rm -r /tmp/combination/Project/*       # Clean it out of old cruft.
cp -l */* /tmp/combination/Project/    # Create hard links at the correct scope.

Ваш желаемый вывод должен быть в /tmp / комбинация / Project, и он должен быть обновлен до текущего, выполнив все вышеупомянутые команды во второй раз.

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