Як скопіювати весь каталог у однойменний каталог без заміни вмісту в каталозі призначення? (замість цього я хотів би додати до вмісту папки призначення)
Як скопіювати весь каталог у однойменний каталог без заміни вмісту в каталозі призначення? (замість цього я хотів би додати до вмісту папки призначення)
Відповіді:
Використовуйте rsync
та передайте, -u
якщо ви хочете оновити лише новіші файли в оригінальному каталозі або --ignore-existing
пропустити всі файли, які вже є в пункті призначення.
rsync -au /local/directory/ host:/remote/directory/
rsync -a --ignore-existing /local/directory/ host:/remote/directory/
(Зверніть увагу /
на джерело з боку джерела: без цього не 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 `find /data/*.gz -type f -mtime +7` USER@SERVER:/backup/
Якщо ви можете зробити вміст цільового файлу лише для читання:
find . -type f -exec chmod a-w '{}' \;
перед запуском scp
(він поскаржиться та пропустить наявні файли).
І змінити їх згодом ( chmod +w
щоб отримати значення на основі umask). Якщо файли не мають дозволу на запис відповідно до вашого umask, вам доведеться якось зберігати дозволи, щоб ви могли їх відновити.
(Відповідь Гілла перезаписує існуючі файли, якщо локально вони новіші, я втратив цінні дані таким чином. Не розумію, чому за таку неправильну та шкідливу відповідь так багато голосів).
rsync --ignore-existing
призвело до втрати даних?
find: missing argument to '-exec'
використовуючи цю команду, а замість цього довелося використовувати: find . -type f -exec chmod a-w {} \;
. Мій linux поганий, ymmv.
find . -type f -exec chmod a-w {} \;
У мене була схожа завдання, в моєму випадку я не міг використовувати rsync
, csync
або FUSE , тому що моє сховище має тільки SFTP. rsync
не вдалося змінити дату та час для файлу, деякі інші утиліти (наприклад csync
) показали мені інші помилки: " Неможливо створити тимчасовий файл .
Якщо у вас є доступ до сервера зберігання даних - просто встановіть openssh-server
або запустіть rsync
тут демон.
У моєму випадку - я не міг цього зробити, і рішення було: lftp . lftp
Використання для синхронізації нижче:
lftp -c "open -u login,password sftp://sft.domain.tld/; \
mirror -c --verbose=9 -e -R -L /srs/folder /rem/folder"
/src/folder
- це папка на моєму ПК, /rem/folder
- є sftp://sft.domain.tld/rem/folder
.
Чоловічі сторінки ви можете знайти за посиланням: http://lftp.yar.ru/lftp-man.html
Щоб скопіювати цілу купу файлів, швидше їх націлити. Використовуючи -k, ви також запобігаєте перезапису файлів tar при розпакуванні його в цільовій системі.
tar -c <source-dir> | ssh <name>@<host> 'tar -kxzf - -C <target-dir>'
scp
перезаписує файли, і немає перемикача, щоб зупинити це, але ви можете скопіювати речі так, зробіть scp і потім скопіюйте наявні файли назад. Приклади:
Скопіюйте всі наявні файли
mkdir original_files ; cp -r * original_files/
Скопіюйте все за допомогою scp
scp -r user@server:dir/* ./
Скопіюйте оригінальні файли на все, на що написано scp:
cp -r original_files/* ./
Інший спосіб досягти цього - це зробити в ls
папці призначення:
У віддаленій папці призначення:
ls | awk '{print "mv " $1 " ../copied_data/"}' > mv_copied_data
scp mv_copied_data user@source.server.com:/path/to/source/folder
У джерелі:
cd /path/to/source/folder
chmod 777 mv_copied_data
./mv_copied_data
Місце призначення:
scp -r user@source.server.com:/path/to/source/folder /path/to/destination/foldeer
-
>
пробіл у новому рядку чи інші спеціальні символи. 3. Жорсткий код для циклу for в python-скрипті. Створення програми під час виконання є складним і складним (навіть коли це робиться професійними програмістами) з багатьох причин. Створення сценарію оболонки ще гірше - жахлива ідея.