具体步骤:
1、在Windows机器上创建共享文件夹
2、将共享文件夹挂载在Linux服务器的/mnt/backup
3、将Linux服务器的文件备份到挂在的文件夹中
具体方法:
1、在Windows机器上创建共享文件夹
在Windows机器上创建文件夹abc,右击点击属性 >> 共享 >> 高级共享 >> 勾选共享此文件夹 >> 点击权限 >> 勾选完全控制 然后点击应用 >> 确定 即可
2、将共享文件夹挂载在Linux服务器的/mnt/backup
先在/mnt下创建backup文件夹
然后输入命令:
mount -t smbfs -o username=test,password=test123 //192.168.1.52/abc /mnt/backup
username是Windows中的账户,password是账户密码 (这里我用的是另外创建的测试账户,没用管理员账户,账户密码尽量不要用特殊符号,否则可能会有问题)
//192.168.1.52是Windows机器的IP地址,abc是共享文件夹
执行命令如果报错如下:
mount: unknown filesystem type 'smbfs'
百度解决办法如下:
mount -t cifs -o username=test,password=test123 //192.168.1.52/abc /mnt/backup
执行命令如果报错如下:
mount: //192.168.0.52/backup is write-protected, mounting read-only
mount: cannot mount //192.168.0.52/backup read-only
则需要安装cifs,命令如下:
yum -y install cifs*
安装完成再次执行提示如下,表示没有权限:
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
百度解决办法如下:
在Windows服务器中win+r,输入gpedit.msc回车,依次选择:Windows设置 >> 安全设置 >> 本地策略 >> 安全选项 在右侧找到 网络访问:本地账户的共享和安全模型 右击属性,选择经典 - 对本地用户身份验证,不改变其本来身份 然后点击应用 确定 即可,然后重新执行挂载命令发现挂载成功。
挂载成功后,尝试将文件写入到该文件夹中,发现没有权限,查看权限drwxr-xr-x发现没有写的权限。
百度处理方法如下:
mount -t cifs -o rw,username=test,password=test123,dir_mode=0777,file_mode=0777 //192.168.0.52/abc /mnt/backup
执行如上命令后,再次写入文件发现有权限了。
有人说需要设置自动挂载,否则重启后失效,目前没有测试重启是否会失效,先记录下设置自动挂载命令,以防万一,后续测试如果确实会失效的话可配置实现自动挂载。
设置自动挂载:
vim /etc/fstab
//192.168.0.52/abc /mnt/backup ext4 defaults 0 0
3、将Linux服务器的文件备份到挂在的文件夹中
写一个定时任务,定期将指定文件复制到挂在目录即可完成备份工作。
crontab -e //查看已创建的所有定时任务
在已创建的定时任务下加上自己的定时任务
0 1 * * * /bin/cp -rf /home/. /mnt/backup
这里复制使用强制覆盖,因为只是复制,没有重命名,所以每次复制都是覆盖,所以选择强制覆盖不询问。
保存退出即可。
定期删除N天前的备份文件
做完备份工作后,还要做定期删除操作,防止备份文件过多占用资源
定期删除的话,不是全部删除,只需删除几天前的备份文件,保留一定时间内的备份文件即可。
命令如下:
* 2 * * * * find /mnt/backup/ -mtime +7 -name "*.sql" -exec rm -rf {} \;
表示每天1点删除/mnt/backup/目录下 7天前的所有sql文件,{} 代表前面find查找出来的文件名,“ ; ”时exec语法的结束标识,\ 相当于转译。
find: missing argument to `-exec'
如果报如上错误则可能问题如下:
注意{}与 \ 之间需有空格,结尾分号前是反斜杠。