scp定时传输文件


前言

项目需要将数据库文件异地备份,数据库是每天增量备份的。利用 crontab、scp、sshpass 定时传输备份文件。crontab配置定时任务。scp用于文件传输,默认端口为22。sshpass用于自动输入密码。


一、scp

scp 的基本使用为:

scp -r “源文件或文件夹” “目标服务器账号@目标服务器ip:目标文件夹”

-r 文件夹中所有子目录都会复制
需要注意:目标文件夹要提前创建好

# scp -r "源文件或文件夹" "目标服务器账号@目标服务器ip:目标文件夹"
[root@ecs-202377154157 test]# cd /root/test/
[root@ecs-202377154157 test]# ls
test_2024_03_25_02_00_45  test_2024_03_26_02_00_45  test_2024_03_27_02_00_45
[root@ecs-202377154157 test]# scp -r "/root/test" "root@192.168.1.21:/root"
root@192.168.1.21's password: #需要输入目标服务器的用户密码
test_2024_03_25_02_00_45 																		100%  134     3.3KB/s   00:00    
test_2024_03_26_02_00_45																		100%  134     3.9KB/s   00:00       
test_2024_03_27_02_00_45																		100%  134     3.9KB/s   00:00  

二、sshpass

scp 命令需要输入密码,sshpass可以自动输入,省事。
sshpass -p “目标服务器密码” scp -r “源文件或文件夹” “目标服务器账号@目标服务器ip:目标文件夹”

[root@ecs-202377154157 test]# sshpass -p "123456" scp -r "/root/test" "root@192.168.1.21:/root"

三、sh文件

文件按天创建,每天只需要传输最新的文件即可

[root@ecs-202377154157 test]# ll -h
total 0
drwxr-xr-x 2 root root 162 Mar 25 02:01 test_2024_03_25_02_00_45
drwxr-xr-x 2 root root 162 Mar 26 02:01 test_2024_03_26_02_00_45
drwxr-xr-x 2 root root 162 Mar 27 02:01 test_2024_03_27_02_00_45

写shell命令,获取每天新生成的文件,并传输。newermt 筛选的是文件夹更新时间,当前目录也会筛选出来,所以要加个判断,判断是不是当前目录:/root/test,是的话跳过,只传输子目录

[root@ecs-202377154157 datadisk]# vi remote_backup.sh 

#!/bin/bash
# 当天的时间
pecified_time=$(date +'%Y-%m-%d')

# 要搜索的文件目录
search_directory="/root/test"

# 远程服务器的用户名和IP
remote_user="root"
remote_ip="192.168.1.21"

# 远程服务器的目标目录
remote_directory="/root/test"

# 查找指定时间之后修改的文件
files_to_copy=$(find "$search_directory" -type d -newermt "$specified_time")

# 循环复制文件到远程服务器
for file in $files_to_copy; do
        if [ "$file" != "$search_directory" ] #判断是不是当前目录:/root/test,是的话跳过,只传输子目录
        then
                echo $file
                sshpass -p 'Dhhah455@$' scp -r "$file" "$remote_user@$remote_ip:$remote_directory/"
        fi
done

四、crontab

添加crontab定时任务,定时执行传输命令。

编辑crontab任务:crontab -e
查看crontab任务:crontab -l

[root@ecs-202377154157 ~]# crontab -e
0 5 * * * /root/test/remote_backup.sh  #每天5点执行remote_backup.sh

[root@ecs-202377154157 ~]# crontab -l
0 5 * * * /root/test/remote_backup.sh

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值