![是否可以通过FTP传输某个日期范围内的文件](https://linux22.com/image/21870/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87FTP%E4%BC%A0%E8%BE%93%E6%9F%90%E4%B8%AA%E6%97%A5%E6%9C%9F%E8%8C%83%E5%9B%B4%E5%86%85%E7%9A%84%E6%96%87%E4%BB%B6.png)
我需要将大量文件从 FTP 服务器传输到新服务器。可能有数千个文件,所以我想将其限制为过去三个月内上传的文件 - 这可能吗?如果可能的话如何?
另外,在开始实际下载之前是否可以了解下载的大小?
谢谢
答案1
您可以使用lftp
为此,利用其mirror
命令。这是联机帮助页的一个片段:
mirror [OPTS] [source [target]]
Mirror specified source directory to local target directory. If target
directory ends with a slash, the source base name is appended to
target directory name. Source and/or target can be URLs pointing to
directories.
[cut...]
-N, --newer-than=SPEC download only files newer than specified time
--on-change=CMD execute the command if anything has been changed
--older-than=SPEC download only files older than specified time
[...]
一定要看看手册,因为确实有很多有用的选项mirror
- 例如--allow-chown
或--allow-suid
例如--parallel[=N]
。 Lftp 还可以与其他访问协议一起使用,例如sftp
、fish
或http(s)
。
答案2
您可以尝试使用以下命令将其安装为文件系统curlftpfs
。
然后使用复制find
。
例如:
mkdir /tmp/mountpoint
curlftpfs ftp://example.com/ /tmp/mountpoint/
cd /tmp/mountpoint
find -mtime +90 -exec cp {} /dest/path/ \;
我怀疑存在更好的解决方案。