rsync «нет такого файла или каталога» при использовании подстановочного знака

Самым простым решением, вероятно, является использование таймера, который запускается каждый день и проверяет, наступит ли завтра 1-е число месяца. Примерно так:

mytimer.timer:

[Unit]
Description=run mytimer.service daily at 6am
[Timer]
OnCalendar=6:00
Persistent=true
[Install]
WantedBy=timers.target

mytimer.service:

[Unit]
Wants=mytimer.timer
Description=run on last day of month
[Service]
Type=oneshot
ExecStart=/bin/bash -c '[ $(date --date=tomorrow +%d) -eq 1 ] && \
                        /bin/myscript'

Последний рабочий день месяца я рассчитываю следующим образом: посмотрите на 3 дня в будущем и проверьте, является ли дата третьим и день - с четверга по понедельник включительно, либо дата - 1-е или 2-е, а день - понедельник. Эквивалентный тест bash с использованием даты и% w для дня недели (0 = воскресенье) будет выглядеть так:

[[ $(date --date=+3days +%d%w) =~ 03[45601]|011|021 ]]
3
29.12.2017, 12:32
2 ответа

Возможно, вы используете псевдоним для rsync , который включает noglob ? Некоторые фреймворки конфигурации оболочки устанавливают это за вас (например, prezto для zsh). Я испытал такое же поведение, вы можете либо:

  1. отключить псевдоним ( unalias rsync )
  2. ввести полный путь ( / usr / bin / rsync [etc.] , возможно)
  3. или используйте команду rsync [etc.]

, чтобы обойти ее.

0
27.01.2020, 21:31

Чтобы скопировать папку в другую с помощью rsync, просто выполните

rsync -a /source/folder/path/ /destination/folder/path/

В вашем случае

rsync -a "$folder64/Pictures/" "$folder65/Pictures/"

Важным является замыкающий /источник.

При использовании $folder64/Pictures/*возможно, что вы не копируете содержимое отдельной папки, поскольку аргументы командной строки расширяются до списка элементов в исходной папке, соответствующих шаблону подстановки имени файла *, и это обычно не соответствует скрытым файлам или папкам.

В вашем конкретном случае вы получаете сообщение об ошибке «Нет такого файла или каталога». Это означает, что каталог, который вы указали в качестве источника, просто не существует или пуст. Если он пуст, это приводит к тому, что *остается нерасширенным, и rsyncне может найти данный файл (с именем*)для синхронизации.

2
27.01.2020, 21:31

Теги

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