日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

定时从linux获取文件,Linux 使用scp命令定时将文件备份到另一台服务器

發布時間:2025/5/22 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定时从linux获取文件,Linux 使用scp命令定时将文件备份到另一台服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主要思路就是使用scp命令 + linux定時執行任務。

目標:2臺服務器,A為主服務器,B為備份服務器,需要每天中午12點將A上的文件備份到B上。

1.首先在A上安裝except

一路yes下去即可

yum install expect

2.編寫腳本

這里給個示例

要傳的文件在A服務器的/home/20181025/目錄下

filepath=/home/20181025/

echo "`date +%Y%m%d` start upload......"

echo "`date +%Y%m%d` start upload......" > /home/import.log

sleep 5s

#B服務器所用賬號的密碼

password='**********'

echo "start copy datafile from remote path..."

echo "start copy datafile from remote path..." >> /home/import.log

/usr/bin/expect <

#設置超時時間

set timeout 10

#-r 為 遞歸復制整個目錄,即現在會將/home/20181025/整個文件夾拷貝過去

#-p 為保留源文件權限

#順便提下 -P 22 可以修改傳輸端口,不寫默認為22

#root為B上的用戶賬號

#/home/ 為傳輸到的目錄,即A上的/home/20181025/整個文件夾會被放到B上的/home/文件夾下

spawn scp -r -p $filepath root@xx.xx.xx.xx:/home/

expect "*assword:"

send "$password\r"

send "exit\r"

expect eof

EOF

if [ $? = 0 ]; then

echo "datafile copy successful!"

echo "datafile copy successful!" >> /home/import.log

else

echo "datafile copy failed!"

echo "datafile copy failed!" >> /home/import.log

fi

編寫完腳本后上傳到A上,當然直接在A上寫的就省事了。

3.修改格式

如果你是在windows上編寫的腳本,那么就需要注意上傳到服務器上的腳本格式了.

這里假設腳本文件為 1.sh,上傳到A上后的位置為 /home/1.sh

(1)進入編輯界面

vim /home/1.sh

(2)輸入 :

:

可以看到最下方出現了一個 :

(3)輸入 set ff 并回車

set ff

就可以查看到當前文件的格式了,如果不是unix而是dos的話就需要修改下格式了。

(4)修改格式

先輸入

:

然后再

set ff=unix

回車,即可

4.修改腳本權限

相信這個不用多說

chmod 777 /home/1.sh

然后在執行腳本前需要我們手動執行下scp命令,因為第一次連接時需要進行授權。

5.授權

將你腳本中的scp 那一行拷貝出來

scp -r -p /home/20181025/ root@xx.xx.xx.xx:/home/

回車

按照提示輸入密碼和yes。順便查看下文件夾是否傳過去了,傳過去了話就刪了,下一步要測試腳本。

6.測試執行腳本

cd /home

./1.sh

看下腳本是否能正常執行

因為/home/20181025/ 文件夾中只有一個123.txt文件,所以如下方所示,傳送成功,然后到B服務器的/home/ 目錄下查看是否存在 /20181025/ 文件夾 和 /20181025/123.txt 文件。

恩,成功傳過來了呢

然后看下A服務器上的/home/import.log 日志文件是否記錄了日志。

7.計劃任務

這里直接利用linux的計劃任務

crontab -e

編輯文件,添加如下代碼

代表每天12點執行一次1.sh腳本

00 12 * * * /home/1.sh

時間示例(可自行設置執行時間):

43 21 * * * 每天的21:43 執行

15 05 * * *    每天的05:15 執行

0 17 * * * 每天的17:00 執行

0 17 * * 1 每周一的 17:00 執行

0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 執行

0-10 17 1 * * 毎月1日從 17:00到7:10 毎隔1分鐘 執行

0 0 1,15 * 1 毎月1日和 15日和 一日的 0:00 執行

42 4 1 * *     毎月1日的 4:42分 執行

0 21 * * 1-6   周一到周六 21:00 執行

0,10,20,30,40,50 * * * * 每隔10分 執行

*/10 * * * *        每隔10分 執行

1 * * *         從1:0到1:59 每隔1分鐘 執行

0 1 * * *         1:00 執行

0 */1 * * *        毎時0分 每隔1小時 執行

0 * * * *         毎時0分 每隔1小時 執行

2 8-20/3 * * *      8:02,11:02,14:02,17:02,20:02 執行

30 5 1,15 * *       1日 和 15日的 5:30 執行

10.30更新

修改腳本,添加是否授權部分。

filepath=/home/20181025/

echo "`date +%Y%m%d` start upload......"

echo "`date +%Y%m%d` start upload......" > /home/import.log

sleep 5

password='xxxxx'

echo "start copy datafile from remote path..."

echo "start copy datafile from remote path..." >> /home/import.log

/usr/bin/expect <

set timeout 10

spawn scp -r -p $filepath root@xx.xx.xx.xx:/home/

expect {

"(yes/no)?"

{

send "yes\n"

expect "*assword:" {send "$password\n"}

}

"*assword:"

{

send "$password\n"

}

}

send "exit\n"

expect eof

EOF

if [ $? = 0 ]; then

echo "datafile copy successful!"

echo "datafile copy successful!" >> /home/import.log

else

echo "datafile copy failed!"

echo "datafile copy failed!" >> /home/import.log

fi

總結

以上是生活随笔為你收集整理的定时从linux获取文件,Linux 使用scp命令定时将文件备份到另一台服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。