簡體   English   中英

通過FTP命令或帶有FTP命令的Shell腳本上傳到Linux服務器后的TAR大小差異

[英]TAR size difference after uploading to Linux server via FTP command or a shell script with FTP command

我有一個tar文件“ backup_20140626”,大小為444477440。我通過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

有人可以告訴我這是怎么了嗎? 非常感謝你!

如果在tar文件上運行dos2unix,它是否可以固定文件大小? 如果是這樣,那是因為無論程序說什么,它都以ASCII(不是二進制)格式傳輸。

您可以在腳本中指定“二進制”,如果您不想每次都重寫腳本,也可以讓它從參數中讀取文件名:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM