![](/img/trans.png)
[英]How to use linux shell command to upload entire directory to ftp server?
[英]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.