sftp 传输后目录的大小不同?

sftp 传输后目录的大小不同?

我正在使用 sftp将文件夹从服务器移动到debian另一个服务器。centos

传输完成后,文件夹大小会有所不同。例如:

远程服务器:

sftp 00.00.00
sftp get folderName ( size 87mb)

在本地服务器上:

du -sh * 
folderName ( size 83mb )

我可能没有传输隐藏文件和文件夹吗?

答案1

我不熟悉 sftp,但原因可能是单位不同:du显示 MiB 大小,而 sftp 可能显示 Mb。要将两者相互转换,请将 sftp 给出的大小乘以1000*1000/(1024*1024)(87 -> ~83)。

关于该主题的维基百科页面:https://en.wikipedia.org/wiki/Byte#Multiple-byte_units

请注意,如果您传输非常小的文件,您可能有一天会注意到du显示的大小比预期的要大。这是因为du显示磁盘上文件的保留大小大于 sftp 计算的实际“有用”大小。

编辑:要测试此行为,您可以创建一个大小受控的文件并进行传输。要创建一个 32 MiB(~33MB)的文件:

# 1048576 is 1 MiB (1024*1024)
dd if=/dev/zero bs=1048576 count=32 of=testfile

答案2

文件夹可以增大但不能缩小(至少在 EXT4 上)。出现此结果的最可能原因是,在某个时间点,源目录中有更多文件,但后来被删除了。

而在目标位置,目录内的文件数量是(并且一直是)您刚刚复制的数量 - 该数量小于源目录中的最大值。

“测试”这个想法的一种方法是将所有文件从同一源复制到同一服务器上的不同目的地,使用安装的相同文件系统。

您应该发现新副本具有与 SFTP 目标上的目录大小相同的目录。

相关内容