Копировать только новые файлы - это возможно? В основном хочу объединить две папки

14

У меня есть папка на диске 1, которая называется Музыка, и это 100 ГБ. У меня есть папка на диске 2, которая называется Музыка, и она имеет размер 116 ГБ. Это самая обновленная версия. Как скопировать папку «Музыка» с диска 2 на диск 1 без необходимости перезаписывать каждый файл?

dallen
источник
Какую версию OS X вы используете?
Nix
1
Я использую 10.7.4. Когда я копирую папку с одного диска на другой, меня спрашивают, хочу ли я заменить. Нет варианта слияния.
выпал

Ответы:

5

Опция слияния будет отображаться, только если вы копируете (а не перемещаете) папку. Убедитесь, что вы удерживаете, optionкогда перетаскиваете новую папку в местоположение старой папки. Кроме того, использование + cдля копирования новой папки и + vдля вставки поверх старой папки даст вам возможность объединить файлы.

шухер
источник
Это по-прежнему записывает поверх файлов, которые не нужно переписывать. Использование rsyncвместо
BRogers
Даже если опция слияния доступна, она иногда не работает (просто сообщает об ошибке и ничего не делает) - особенно в случае больших папок, как в вашем случае. Это еще одна причина, почему вы должны использовать rsync.
Анджей Мартина
24

Это классический вариант использования rsync:

rsync -av /source-path/source-dir /destination-path

rsync скопирует только новые и измененные файлы в новое место.

Важно понять, как работает косая черта в исходном аргументе. Если есть косая черта, то содержимое / source-path / source-dir будет скопировано в destination-path . Если косой черты нет, то сам source-dir будет скопирован в место назначения, а его содержимое станет еще одним уровнем иерархии назначения.

Поэтому, если вы хотите скопировать один путь на другой, включите косую черту следующим образом:

rsync -av /sourcepath/sourcedir/ /duplicatpath/sourcedir/
Джон Д.
источник
1
Отличный улов! И если вы делаете это с нескольких дисков (или из любого места на вашем компьютере) и не хотите печатать каталоги, вы можете просто перетащить диск (внешний USB или временную капсулу) или просто определенный каталог и добавить его. это к команде для вас. Просто перетащите целевое местоположение в терминал
BRogers
Чувак, большое спасибо за предложение косой черты. Я размышлял над тем, почему rsync -av ./foo/bar / vol1 / foo / bar копирует все существующие файлы. Кровавые косые черты лол !!!
см
4

ОБНОВИТЬ

Сначала установите coreutils. Беги brew install coreutils. Если вы не brewустановили ... переключиться обратно на Windows!

Проверьте, что cp --versionвыводится версия cp (GNU coreutils) 8. ^^

Тогда у вас будет правильная cpверсия и -uфлаг будет работать.


Проверьте cpкоманду. Используйте man cpи читайте варианты. Вы можете сделать что-то вроде:

cp -r -u ~/source ~/destination

-R, -r , --recursive: копировать каталоги рекурсивно
-u , --update: копировать только в том случае, если файл SOURCE новее файла назначения или когда файл назначения отсутствует
-p, аналогично --preserve = mode, owner , timestamps
-v --verbose: объяснить, что делается

Поэтому, если вы хотите скопировать файлы из вашей папки « Загрузки» / «Музыка », чтобы сказать свою папку « Музыка» / «Новая », вы должны сделать что-то вроде: Это объединит содержимое этих двух папок и, если существуют два файла с одинаковым именем и путем, будет сохранено новейший, основанный на отметке времени.
cp -ruvp ~/Downloads/music/* ~/Music/new/

drew7721
источник
Вы уверены, что опция -u работает с командой cp в OSX? Я получаю сообщение "cp: нелегальный вариант - u" в Сьерре. Кажется, не все команды такие же, как в Linux.
OMA
Попробуйте команду cp --help и посмотрите, доступна ли эта опция. Или проверьте версию cp --version и убедитесь, что она обновлена. Я использую: cp (GNU coreutils) 8.27
drew7721
К сожалению, -u не является допустимым флагом для cp на OS X. Было бы очень удобно иметь!
Пер Квестед Аронссон
К сожалению, этот ответ неверен.
Уильям Чернюк
используйте, brew install coreutilsчтобы получить правильную cpверсию.
drew7721
0

Не уверен, почему кнопка Lion Merge по умолчанию не отображается для меня. Но я закончил тем, что использовал ditto. Найдено здесь: https://superuser.com/a/221599/102789

dallen
источник
1
БЫТЬ ОСТОРОЖЕН! То же самое не сохраняет новые файлы, оно всегда перезаписывает место назначения источником. Если исходный файл старше, он удалит новый файл и заменит его более старым
FrancescoMM
это верно - очень важное предупреждение от FrancescoMM, используйте rsync
Анджей Мартина