Как скопировать весь каталог в одноименный каталог без замены содержимого в целевом каталоге? (вместо этого я хотел бы добавить к содержимому папки назначения)
ssh
rsync
scp
synchronization
Даниэль Бёмер
источник
источник
Ответы:
Используйте
rsync
и передайте,-u
если вы хотите обновить только файлы, которые новее в исходном каталоге, или--ignore-existing
пропустить все файлы, которые уже существуют в месте назначения.(Обратите внимание
/
на исходную сторону: без этогоrsync
создастся/remote/directory/directory
.)источник
--ignore-existing
добавить без замены, какую потерю данных вы видите?rsync
легко доступна .... (Как Win32-OpenSSH)--rsync-path
)scp перезапишет файлы, если у вас есть права на запись в них.
Другими словами: Вы можете
scp
эффективно пропустить указанные файлы, временно удалив разрешения на запись для них (если вы являетесь владельцем файлов, то есть).источник
scp -r user@server.com:/location/of/files/* /local/location/
Вы можете копировать только новые файлы по дате. использование
find
источник
Если вы можете сделать содержимое файла назначения доступным только для чтения:
перед запуском
scp
(будет пожаловаться и пропустить существующие файлы).И измените их обратно потом (
chmod +w
чтобы получить значение на основе масок). Если не все файлы имеют разрешение на запись в соответствии с вашей маской, вам нужно каким-то образом хранить разрешения, чтобы их можно было восстановить.(Ответ Жиля перезаписывает существующие файлы, если локально они более новые, я потерял ценные данные таким образом. Не понимаю, почему этот неправильный и вредный ответ имеет так много голосов).
источник
rsync --ignore-existing
вы потеряли данные?find: missing argument to '-exec'
используя эту команду, а вместо этого пришлось использовать:find . -type f -exec chmod a-w {} \;
. Мой Linux плох, мммм.find . -type f -exec chmod a-w {} \;
У меня была похожая задача, в моем случае я не мог использовать
rsync
,csync
или FUSE , потому что мое хранилище имеет только SFTP.rsync
Не удалось изменить дату и время для файла, некоторые другие утилиты (напримерcsync
) показывали мне другие ошибки: « Невозможно создать временный файл Обнаружен перекос часов ».Если у вас есть доступ к хранилищу-серверу - просто установите
openssh-server
или запустите здесьrsync
как демон.В моем случае - я не мог этого сделать, и решение было: lftp .
lftp
Использование для синхронизации приведено ниже:/src/folder
- это папка на моем компьютере,/rem/folder
- естьsftp://sft.domain.tld/rem/folder
.Вы можете найти справочные страницы по ссылке: http://lftp.yar.ru/lftp-man.html
источник
Чтобы скопировать целую кучу файлов, их быстрее смолить. Используя -k, вы также предотвращаете перезапись файлов при распаковке в целевой системе.
источник
scp
перезаписывает файлы, и нет никакого переключателя, чтобы остановить это, но вы можете скопировать все как есть, выполнить scp, а затем скопировать существующие файлы обратно. Примеры:Скопируйте все существующие файлы в путь
Скопируйте все используя scp
Скопируйте исходные файлы поверх всего, что написал scp:
источник
Еще один способ добиться этого - создать
ls
папку назначения:В папке удаленного назначения:
По источнику:
По назначению:
источник
-
>
пробел новой строки или другие специальные символы. 3. Жесткий код цикла for в скрипте Python. Генерировать программу во время выполнения сложно и сложно (даже если это делают профессиональные программисты) по многим причинам. Создание сценария оболочки еще хуже - ужасная идея.