我正在尝试使用 lftp 将新文件从远程 sftp 服务器下载到本地服务器
这就是我正在做的事情:
lftp sftp://user@remoteserver
然后进入目录:
mirror --newer-than=now-1day --verbose
它会下载新文件(YaY!),但它也会下载父目录的每个子目录。虽然没有文件,但只有目录名称:
Transferring file `secret.pdf'
Transferring file `secret 2.pdf'
Making directory `Created'
Making directory `old 2019'
Making directory `backups of data'
Making directory `to test'
Total: 4 directories, 43 files, 0 symlinks
New: 2 files, 0 symlinks
7019832 bytes transferred in 28 seconds (246.6 KiB/s)
To be removed: 0 directories, 1 file, 0 symlinks
而且这些目录并不是新的,它们已经在那里好几个月了,正如ls
我所料
drwxrwxr-x 2 user user 4096 Apr 8 00:28 Created
当然,我可以使用它--no-empty-dirs
,它只会下载新文件,摆脱空目录,但为什么会发生这种情况呢?
答案1
因为--newer-than
只影响文件。所以当lftp
在服务器上找到本地不存在的文件夹时,它会创建本地镜像。只有这样它才会进入文件夹并搜索文件。它找不到符合您条件的文件。没有下载任何内容,您得到的是空文件夹。
--no-empty-dirs
或修改行为mirror:no-empty-dirs
,以便仅在真正需要下载某些文件时才创建本地文件夹。