我想使用 scp 传输一个文件夹及其内容,包括子目录。目录的大小为16.2GB
,包含40.647
文件和7.463
子目录。本地计算机运行 Windows 10,远程计算机运行 Lubuntu。
我尝试运行命令scp -r "D:/Projekts" backup:/home/lars/backup
、scp -r "D:/Projekts/." backup:/home/lars/backup
和scp -r "D:/Projekts/*" backup:/home/lars/backup
。第二个带点的命令由于找不到文件而未执行。我还尝试了 PowerShell 和 CMD。
在命令之后(第一或第三)执行后,部分目录已上传。
正在上传的文件夹结构的大小为:scp -r "D:/Projekts/*" backup:/home/lars/backup
,9.9GB
包含9737
文件。查看文件夹结构的内容,您可以看到,已上传的子目录已完全上传,按字母顺序开始。只缺少几个子目录。
另一个文件夹结构的大小2.4GB
与2262
Files 相同。此文件夹结构的内容相同,不同之处在于上传的子目录较少。
从事实来看,scp 在某种程度上限制了您可以一次上传的文件数量,这是合理的,因为在明确上传这些子目录时,未上传的子目录可能会被上传。
上传整个目录的可能解决方案是什么?
答案1
scp
是一个很棒的工具,但是对于大量的文件,我建议你尝试一下rsync
。 rsync
将在 上运行ssh
,因此你不需要在系统上进行更多配置,除了可能获得一个rsync
适合你的平台/操作系统的版本 - 我猜是 Windows。
命令行的形式如下:
rsync -az "D:/Projekts/" backup:/home/lars/backupp/
... 虽然我不是活跃的 Windows 用户,所以你必须确保这些路径适用于 Windows。
需要注意的是,结尾的斜杠 ( /
) 是有意义的,因此您应该阅读 的手册页rsync
。还有许多其他选项可以帮助您实现目标。其中最值得注意的是--delete
,它会删除目标上不存在或不再存在于源上的文件。
如果发生中断,无论是网络中断还是其他任何原因,您都可以重新发出相同的 rsync 命令,它将只找出需要(重新)传输的文件。