Проблема rsync: ошибка не удалась: Нет такого файла или каталога (2)

Вопрос или проблема

Я пытаюсь использовать rsync для файлов из моего домашнего каталога. Ошибка, которую я получаю, следующая:

rsync: link_stat "/home/xxx/.mozilla/firefox/**/*.sqlite" failed: No such file or directory (2)

Я проверил, и файл существует, но эта ошибка продолжает возникать.

Вот команда, которую я использую:

HOME_FILES=/home/xxx/

rsync -v --copy-links --recursive --files-from=rsync_files $HOME_FILES $DESTDIR/rs/

--files-from параметр не поддерживает регулярные выражения или подстановочные знаки. Я думаю, вам нужно прочитать руководство rsync:

--include-from=FILE
       Эта опция связана с опцией --include, но она специфицирует
       файл, содержащий включаемые шаблоны (по одному на строку). Пустые
       строки в файле и строки, начинающиеся с ’;’ или ’#’, 
       игнорируются. Если FILE - это -, список будет прочитан из стандартного
       ввода.

Ответ или решение

Ваш вопрос связан с возникновением ошибки при использовании команды rsync, когда вы попытались синхронизировать файлы из вашей домашней директории. Ошибка выглядит следующим образом:

rsync: link_stat "/home/xxx/.mozilla/firefox/**/*.sqlite" failed: No such file or directory (2)

Причина этой ошибки заключается в используемой команде, в частности, в параметре --files-from. Кратко разберем причины возникновения данной ошибки и предложим пути их устранения.

Основные причины ошибки

  1. Использование подстановочных символов (wildcards):
    Параметр --files-from не поддерживает использование подстановочных символов или регулярных выражений. Т.е. когда вы указали "**/*.sqlite", rsync пытается найти точный файл с таким именем, чего нет.

  2. Путь к файлам:
    При использовании --files-from, rsync рассчитывает, что вы укажете относительно пути, заданного в $HOME_FILES. Если файл, который вы ищете, не существует в этом пути или указан неправильно, это вызовет ошибку.

Решение проблемы

Для решения данной ошибки рекомендуется предпринять следующие шаги:

  1. Проверка путей файла:
    Убедитесь, что абсолютно все пути заданы корректно и соответствуют структуре директорий.

  2. Использование find и --include-from:
    Если вы хотите использовать маски и подстановочные символы, вам следует сначала собрать список нужных файлов с помощью команды find, затем передать его в rsync через --include-from:

    find /home/xxx/.mozilla/firefox/ -name "*.sqlite" > rsync_files_list
    rsync -v --copy-links --recursive --include-from=rsync_files_list --exclude='*' $HOME_FILES $DESTDIR/rs/

    В данном примере команда find собирает все .sqlite файлы из директории и записывает их в rsync_files_list. Затем rsync использует --include-from для чтения этого списка и синхронизации файлов.

  3. Детальная настройка rsync:
    Учитывайте, что другие параметры команды rsync могут также влиять на её результат. Например, проверьте настройку $DESTDIR — директория назначения сохранения синхронизированных файлов должна быть доступна для записи.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...