Назад | Перейти на главную страницу

lftp reverse mirror тихо пропускает файлы в подпапках

Я использую lftp для отправки содержимого на веб-сервер только для ftp. Сначала он работал, чтобы загружать файлы рекурсивно и даже постепенно.

Любая идея, почему при этом будут пропущены файлы, измененные в подпапке, но не пропустить файлы, измененные в домашнем каталоге?

Подробности: Я использую режим обратного зеркала, который отправляет локальные данные на сервер, а не загружает их с сервера. Во всем Интернете это рекомендуемый вариант для рекурсивного обновления.

Вот полный сценарий (от этот ответ)

#!/bin/bash    
HOST="..."
USER="..."
PASS="..."
FTPURL="ftp://$USER:$PASS@$HOST"
LCD="/local/directory"
#RCD=""
#RCDCMD=cd $RCD;
#DELETE="--delete"
lftp -c "set ftp:ssl-allow no;
set ftp:list-options -a;
open '$FTPURL';
lcd $LCD;
$RCDCMD \
mirror --reverse \
   $DELETE \
   --verbose \
   --exclude-glob .*swp \
   --exclude-glob .*swn \
   --exclude-glob .*swo"

В связанный вопрос, был решен из-за проблем с разрешениями, что в данном случае не является проблемой. На сервере все "rwxr-xr-x".

Дальнейшее тестирование: Lftp работает с перебоями. Например, я запускаю команду дважды, и она пропускает изменения, затем в третий раз она работает, правильно копируя измененные файлы на сервер.

В команде lftp запустите ls -R перед mirror.

# Set variables as in the question
lftp -c "set ftp:ssl-allow no;
set ftp:list-options -a;
open '$FTPURL';
lcd $LCD;
ls -R;   # This is the key line!
$RCDCMD \
mirror --reverse \
   $DELETE \
   --verbose \
   --exclude-glob .*swp \
   --exclude-glob .*swn \
   --exclude-glob .*swo"

Я собираюсь продолжить тестирование, но до сих пор это работало каждый раз, когда я его тестировал ...