【问题标题】:TAR size difference after uploading to Linux server via FTP command or a shell script with FTP command通过 FTP 命令或使用 FTP 命令的 shell 脚本上传到 Linux 服务器后的 TAR 大小差异
【发布时间】:2014-06-26 09:05:26
【问题描述】:

我有一个大小为 444477440 的 tar 文件“backup_20140626”。我通过 FTP 将它上传到运行 Linux 的 NAS,如下所示:

>put backup_20140626
local: backup_20140626 remote: backup_20140626
229 Entering Extended Passive Mode (|||22735|)
150 Opening BINARY mode data connection for backup_20140626
100% |*************************************|   423 MB   26.59 MB/s    00:00 ETA
226 Transfer complete
444477440 bytes sent in 00:15 (26.57 MB/s)

我下载了文件,可以打开了。

然后我写了一个脚本 backup.sh 来自动上传:

ftp -n 192.168.0.2 <<EOF
quote USER backup
quote PASS backup
cd /mnt/array1/_backup
put backup_20140626 
quit
EOF

好的,我运行了脚本:

#./backup.sh
Connected to 192.168.0.2.
220 192.168.0.2 FTP server ready
331 Password required for backup
230 User backup logged in
250 CWD command successful
Local directory now /backup/dat
local: backup_20140626 remote: backup_20140626
229 Entering Extended Passive Mode (|||63859|)
150 Opening BINARY mode data connection for backup_20140626
100% |*************************************|   425 MB   21.42 MB/s    --:-- ETA
226 Transfer complete
446076565 bytes sent in 00:19 (21.42 MB/s)
221 Goodbye.

同一个文件传输的大小不同!我重新下载了文件,无法识别为tar文件:

#tar xvf backup_20140626
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

谁能告诉我这里出了什么问题?非常感谢!

【问题讨论】:

    标签: linux shell ftp tar


    【解决方案1】:

    如果您在 tar 文件上运行 dos2unix,它会修复文件大小吗?如果是这样,那是因为不管程序说什么,它都是以 ASCII(而不是二进制)传输的。

    你可以在你的脚本中指定'binary',如果你不想每次都重写脚本,你也可以让它从一个参数中读取文件名:

    ftp -n 192.168.0.2 <<EOF
    quote USER backup
    quote PASS backup
    binary
    cd /mnt/array1/_backup
    put backup_20140626
    quit
    EOF
    

    题外话,但如果你不想每次都重写脚本,你可以让它从命令行读取一个参数 ./ftpScript.sh backup_20140626 (或当天文件的名称)。

    ftp -n 192.168.0.2 <<EOF
    quote USER backup
    quote PASS backup
    binary
    cd /mnt/array1/_backup
    put $1
    quit
    EOF
    

    【讨论】:

    • 在脚本中添加“二进制”命令后,文件大小现在可以了,可以再次打开。非常感谢你。经验教训:尽管 FTP 命令告诉我它通过连接打开了 BINARY 模式,但实际上并没有:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多