Centos7下使用scp實現遠端服務備份檔案

2021-08-20 08:25:29 字數 3586 閱讀 7826

公司運營部同事需要乙個檔案伺服器用來儲存保單影像資料。由於公司沒有現成的環境,於是決定自己搞一下。大致思路:

1.先建立乙個ftp使用者,用來上傳檔案。

2.由於ftp使用者沒有ssh和telnet許可權,需要建立另外乙個使用者用來做備份操作。

3.使用crontab定時任務實現每天晚上自動將檔案打包後傳輸到另一台伺服器上備份。

在linux中新增ftp使用者,並設定該使用者不能登入且只能訪問自己的目錄,操作步驟如下:

1、環境:ftp為vsftp。被限制使用者名為yunying。被限制路徑為/home/yunying

2、建使用者

在root使用者下新增ftp使用者,操作步驟如下:

useradd -d /home/yunying yunying -s /sbin/nologin
/sbin/nologin 限定使用者不能telnet,只能ftp

更改使用者相應的許可權設定:

usermod -s /sbin/nologin  //限定使用者test不能telnet,只能ftp

usermod -s /sbin/bash test //使用者test恢復正常

usermod -d /test test //更改使用者test的主目錄為/test

3、限制使用者只能訪問/home/yunying,不能訪問其他路徑

修改/etc/vsftpd/vsftpd.conf如下: 

chroot_local_user=yes #

chroot_list_enable=yes #

chroot_list_file=/etc/vsftpd/chroot_list #設定受限制

allow_writeable_chroot=yes #允許在使用者自身目錄下執行write操作,限定只能訪問自身目錄後預設不能write操作

引數說明可參考:

4.重啟ftp服務

[root@linuxsir001 root]# /etc/init.d/vsftpd restart
5、如果需要允許使用者修改密碼,但是又沒有telnet登入系統的許可權:

usermod -s /usr/bin/passwd test //使用者telnet後將直接進入改密介面passwd test //為test設定密碼
1.編寫備份指令碼

#該指令碼用來將190伺服器上的運營影像資料壓縮並傳輸到189伺服器上儲存

#2018-05-29

back_dir="/home/backdata"

date=`date +%y%m%d`

log=$back_dir"/"$date".log"

date_time=`date +"%y-%m-%d %h:%m:%s"`

echo $date_time" start" >> $log

echo $date_time" 開始壓縮檔案" >> $log

tar -czvf $back_dir"/"$date".tar.gz" /home/yunying/

echo $date_time" 開始刪除上次備份的檔案" >> $log

find $back_dir -mtime +1 -name '*.*' -exec rm -rf {} \;

echo $date_time" 刪除上次備份的檔案結束" >> $log

echo $date_time" 開始上傳到189伺服器" >> $log

scp -p $back_dir"/"$date".tar.gz" [email protected]:~/

echo $date_time" 上傳到189伺服器結束" >> $log

ssh -t [email protected] "find /home/backdata -mtime +1 -name '*.*' -exec rm -rf {} \;"

echo $date_time" 刪除189伺服器上昨天的檔案" >> $log

echo $date_time" end" >> $log

2.ssh免密碼

遠端主機不是root使用者(比如普通使用者test)登陸方法

a為本地主機(即用於控制其他主機的機器) ;

b為遠端主機(即被控制的機器server), 假如ip為192.168.60.110;

a和b的系統都是linux

在a上執行命令:

# ssh-keygen -t rsa (連續三次回車,即在本地生成了公鑰和私鑰,不設定密碼)

# ssh [email protected] "mkdir .ssh" (需要輸入密碼)

# scp ~/.ssh/id_rsa.pub [email protected]:.ssh/id_rsa.pub (需要輸入密碼)

在b上的命令:

# touch /home/test/.ssh/authorized_keys (如果已經存在這個檔案, 跳過這條)

# cat /home/test/.ssh/id_rsa.pub >> /home/test/.ssh/authorized_keys (將id_rsa.pub的內容追加到authorized_keys 中)

修改test/.ssh和authorized_keys的許可權

#chmod 700 test

#chmod 700 .ssh

#chmod 600 authorized_keys

回到a機器:

# ssh [email protected] (不需要密碼, 登入成功)
1.crontab命令介紹

以下是這個命令的一些引數與說明:

crontab -u //設定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數  

crontab -l //列出某個使用者cron服務的詳細內容

crontab -r //刪除沒個使用者的cron服務

crontab -e //編輯某個使用者的cron服務

比如說root檢視自己的cron設定:crontab -u root -l

再例如,root想刪除fred的cron設定:crontab -u fred -r

在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e

進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

任務排程的crond常駐命令

crond 是linux用來定期執行程式的命令。當安裝完成作業系統之後,預設便會啟動此任務排程命令。crond命令每分鐘會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。

2.增加定時任務

登入需要執行crontab的使用者,使用crontab -e 進入設定編輯,輸入如下命令實現每天凌晨1點執行指令碼。

00 01 * * * sh /home/backdata/shell/backftp.sh
crontab時間格式及相關知識見:

Centos7用scp複製檔案

安裝scp yum install y openssh clients 命令引數 v 和大多數 linux命令中的 v意思一樣,用來顯示進度。可以用來檢視連線 認證 或是配置錯誤 c 使能壓縮選項 p 選擇埠 r 複製目錄 檔案命令 複製檔案 本地 遠端 scp cloud data test.tx...

CentOS 7下FirewallD使用簡介

學習apache安裝的時候需要開啟80埠,由於centos 7版本以後預設使用firewalld後,網上關於iptables的設定方法已經不管用了,想著反正iptable也不會用,索性直接搬官方文件,學習firewalld了,好像比iptables要簡單點了。1 firewalld簡介 firewa...

centos7下Firewall使用詳解

安裝它,只需 yum install firewalld 如果需要圖形介面的話,則再安裝 yum install firewall config 一 介紹 防火牆守護 firewalld 服務引入了乙個信任級別的概念來管理與之相關聯的連線與介面。它支援 ipv4 與 ipv6,並支援網橋,採用 fi...