сравните 2 каталога и скопируйте различия в 3-м каталоге

Вашей проблемой является, вероятно, IP xxx.55.32.255.

Даже если Ваша сеть не,/24 окна не играют хорошо ни с каким IP-адресом, заканчивающимся.0 или.255. Стек IP, вероятно, отбрасывает пакеты. Да, это - серьезная ошибка в реализации IP в Windows.

Прочитайте http://support.microsoft.com/kb/281579

32
задан 14 May 2013 в 09:52
3 ответа

Используйте --compare-dest.

На странице руководства:

- compare-dest = DIR - Этот параметр указывает rsync использовать DIR на конечном компьютере в качестве дополнительной иерархии для сравнения файлов назначения с выполнением передач (если файлы отсутствуют в каталоге назначения). Если в DIR обнаружен файл, идентичный файлу отправителя, он НЕ будет передан в каталог назначения. Это полезно для создания разреженной резервной копии только файлов, которые были изменены по сравнению с предыдущей резервной копией.

сначала проверьте свой синтаксис с помощью --dry-run

rsync -aHxv --progress --dry-run --compare-dest=folder2/ folder1/ folder3/

Затем, когда вы будете удовлетворены результатом:

rsync -aHxv --progress  --compare-dest=folder2/ folder1/ folder3/

эта ссылка дает хорошее объяснение --compare-dest scope.

37
ответ дан 28 November 2019 в 19:56

Этот небольшой скрипт должен работать:

folder1="firsts_folder/"
folder2="second_folder/"
folder3="target_folder"
for x in `rsync -rcnC --out-format="%n"  $folder1 $folder2`
    do
        if [ -d "$folder1/$x" ]; then
            mkdir -p "$folder3/$x"
        else
            cp -frv $folder1/$x $folder3/$x
        fi
done

Но я также думаю, что анализ вывода команды diff -qr был бы лучшим решением, потому что он дает вам путь и имя для каждого файла последовательно.

РЕДАКТИРОВАТЬ

Это будет одна команда, ваша команда немного изменена. Но он создаст folder1 под folder3 . И он не работает с полными путями, но также приведенный выше сценарий не работает с полными путями.

rsync -rcnC --out-format="\"%f\"" folder1/ folder2/ | xargs cp --parents -rfvt folder3/

Я использовал \ " в rsync , чтобы заставить его работать с файлами и каталогами, содержащими пробелы. Проверено на Ubuntu 10.04. Надеюсь, это поможет.

3
ответ дан 28 November 2019 в 19:56

Одно из возможных решений - вручную обновить ключи реестра, которые сообщают Windows, где находится «личная» папка.

[HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Папки оболочки] "Personal" = " \\\\ server \\ users \\ username \\ Documents "

[HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Папки пользовательской оболочки] "Personal" = " \\\\ server \\ users \\ username \\ Documents "

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

В параметре folder1 /./ {} дополнительный ./ используется, чтобы указать rsync создать относительные каталоги, начинающиеся с ./ {} , игнорируя папка1 / . Другими словами, он позволяет избежать создания folder3 / folder1 / .

Я смог проверить это только на CentOS 6.4, но, AFAIK, он должен работать так же в Ubuntu 12.04.

РЕДАКТИРОВАТЬ: Я должен отметить, что ответ smithian , несомненно, лучше, но я хотел попытаться сделать это с вашей исходной командой rsync в такт, поскольку она давала вам желаемый результат .

2
ответ дан 28 November 2019 в 19:56

Теги

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