Вопрос или проблема
Я пытаюсь использовать 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
. Кратко разберем причины возникновения данной ошибки и предложим пути их устранения.
Основные причины ошибки
-
Использование подстановочных символов (wildcards):
Параметр--files-from
не поддерживает использование подстановочных символов или регулярных выражений. Т.е. когда вы указали"**/*.sqlite"
,rsync
пытается найти точный файл с таким именем, чего нет. -
Путь к файлам:
При использовании--files-from
,rsync
рассчитывает, что вы укажете относительно пути, заданного в$HOME_FILES
. Если файл, который вы ищете, не существует в этом пути или указан неправильно, это вызовет ошибку.
Решение проблемы
Для решения данной ошибки рекомендуется предпринять следующие шаги:
-
Проверка путей файла:
Убедитесь, что абсолютно все пути заданы корректно и соответствуют структуре директорий. -
Использование
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
для чтения этого списка и синхронизации файлов. -
Детальная настройка
rsync
:
Учитывайте, что другие параметры командыrsync
могут также влиять на её результат. Например, проверьте настройку$DESTDIR
— директория назначения сохранения синхронизированных файлов должна быть доступна для записи.
Заключение
Надеюсь, что эти шаги помогут вам устранить ошибку и успешно использовать rsync
для резервного копирования ваших файлов. Если проблема сохраняется, рекомендуется проверить настройки прав доступа к файлам и директориям, поскольку rsync
может не иметь разрешения для чтения или записи данных.