远程备份有好多,这里介绍2种:scp和rsync

scp基于NFS服务器类似cp的,没有断点备份

rsync在Linux系统之间备份非常方便


一、远程拷贝文件scp

sudo scp -r -P 7122 /home/setup/main.c setup@192.168.1.109:/home/setup

sudo scp -r -P 7122 setup@192.168.1.109:/home/setup/main.c /home/setup
如果传输文件夹加上参数:-r
如果不是默认端口号20需要加上端口号:-P 7122
注意:“-P” 是大写的


二、远程备份文件rsync

Rsync(remote synchronize) 是一个远程数据同步工具,可以使用“Rsync算法”同步本地和远程主机之间的文件。rsync的好处是只同步两个文件不同的部分,相同的部分不在传递。类似于增量备份,这使的在服务器传递备份文件或者同步文件,比起scp工具要省好多时间。


服务器:

1、安装Rsync

sudo apt-get install rsync


2、rsync服务默认不是启动的,我们要修改下面的文件。

sudo vi /etc/default/rsync

RSYNC_ENABLE=true   #false改true


3、修改配置文件

sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc   #已默认安装的软件,默认不启动的似乎都要这么做

sudo vi /etc/rsyncd.conf


4、创建一个密码文件

sudo vi /etc/rsyncd.secrets

setup:123

sudo chmod 600 /etc/rsyncd.secrets


5、启动rsync

sudo /etc/init.d/rsync start


客户端:

1、把这个同步工作交给crontab去执行。首先我们要创建一个密码文件

sudo vi /etc/rsync.pwd

123


2、下面这两步操作是必须的,没有足够权限同步就会不成功,ls -l 你所指向的目录
sudo chmod 0600 /etc/rsync.pwd
sudo chown 普通用户:普通用户组 /etc/rsync.pwd


3、然后我们打开crontab,使它自动同步
$crontab -e
* * * * * rsync -a --password-file=/etc/rsync.pwd liu_rsync@192.168.64.128::my_rsync_bk /databk  


4、crontab随机启动  sudo vi /etc/rc.local



参数说明:

-v verbose,即详细模式

-z 压缩

-r recursive 递归

-topg 保持文件原有属性,一般不用加

 --progress 用来显示详细进度情况

--delete 表示如果服务器删除了一个文件,客户端也应对应删除

--exclude="*.sh" 表明不包括某些文件

--password-file=/etc/rsync.pwd 指定所使用的密码文件

最后一项是需要同步的目录  

注意指定使用的密码文件中只需要有密码,不要有用户名。

详细格式说明:

v, ­­verbose 详细模式输出 

q, ­­quiet 精简输出模式 

c, ­­checksum 打开校验开关,强制对文件传输进行校验 

a, ­­archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于­rlptgoD 

r, ­­recursive 对子目录以递归模式处理 

R, ­­relative 使用相对路径信息 

b, ­­backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为

~filename。可以使用­­suffix选项来指定不同的备份文件前缀。 

backup­dir 将备份文件(如~filename)存放在在目录下。 

suffix=SUFFIX 定义备份文件前缀 

u, ­­update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。


(不覆盖更新的文件) 

l, ­­links 保留软链结 

L, ­­copy­links 想对待常规文件一样处理软链结 

copy­unsafe­links 仅仅拷贝指向SRC路径目录树以外的链结 

safe­links 忽略指向SRC路径目录树以外的链结 

H, ­­hard­links 保留硬链结 

p, ­­perms 保持文件权限 

o, ­­owner 保持文件属主信息 

g, ­­group 保持文件属组信息 

D, ­­devices 保持设备文件信息 

t, ­­times 保持文件时间信息 

S, ­­sparse 对稀疏文件进行特殊处理以节省DST的空间 

n, ­­dry­run现实哪些文件将被传输 

W, ­­whole­file 拷贝文件,不进行增量检测 

x, ­­one­file­system 不要跨越文件系统边界 

B, ­­block­size=SIZE 检验算法使用的块尺寸,默认是700字节 

e, ­­rsh=COMMAND 指定替代rsh的shell程序 

rsync­path=PATH 指定远程服务器上的rsync命令所在路径信息 

C, ­­cvs­exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件 

existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件 

delete 删除那些DST中SRC没有的文件 

delete­excluded 同样删除接收端那些被该选项指定排除的文件 

delete­after 传输结束以后再删除 

ignore­errors 及时出现IO错误也进行删除 

max­delete=NUM 最多删除NUM个文件 

partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输 

force 强制删除目录,即使不为空 

numeric­ids 不将数字的用户和组ID匹配为用户名和组名 

timeout=TIME IP超时时间,单位为秒 

I, ­­ignore­times 不跳过那些有同样的时间和长度的文件 

size­only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间 

modify­window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0

T ­­temp­dir=DIR 在DIR中创建临时文件 

compare­dest=DIR 同样比较DIR中的文件来决定是否需要备份 

P 等同于 ­­partial ­­progress 显示备份过程 

z, ­­compress 对备份的文件在传输时进行压缩处理 

exclude=PATTERN 指定排除不需要传输的文件模式 

include=PATTERN 指定不排除而需要传输的文件模式 

exclude­from=FILE 排除FILE中指定模式的文件 

include­from=FILE 不排除FILE指定模式匹配的文件 

version 打印版本信息 

address 绑定到特定的地址 

config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件 

port=PORT 指定其他的rsync服务端口 

blocking­io 对远程shell使用阻塞IO 

stats 给出某些文件的传输状态 

progress 在传输时现实传输过程 

log­format=FORMAT 指定日志文件格式 

password­file=FILE 从FILE中得到密码 

bwlimit=KBPS 限制I/O带宽,KBytes per second 

crontab随机启动  sudo vi /etc/rc.localh, ­­help 显示帮助信息