非常适合在两台机器之间快速同步大型、复杂的目录,例如论坛的附件目录。再配合
ssh
,则安全性也有保证,且可以利用
ssh
public
key
和
cron
来进行自动定时同步。
说明:两台机器分别为
localhost
和
remotehost
用户分别为
localuser
和
remoteuser。
环境:FreeBSD
4.9
和
FreeBSD
6.1
代码如下
设置
ssh
public
key
认证
$ssh-keygen
-t
dsa
-b
2048
生成所需的密钥
$scp
/home/localuser/.ssh/id_dsa.pub
remoteuser@remotehost:/home/remoteuser/.ssh/localuser_id_dsa.pub
将公钥拷贝至
remotehost
$ssh
remoteuser@remotehost
登录到?端
代码如下
$cd
.ssh/
cat
localuser_id_dsa.pub
>>
authorized_keys
至此,设置
ssh
认证完毕。
设置
rsync
确认两端机器都安装
rsync
,
freeBSD
有
ports
,安装非常方便。
写个脚本名为
backup.sh
,内容如下:
代码如下
#!/bin/sh
RSYNC=/usr/local/bin/rsync
SSH=/usr/bin/ssh
KEY=/home/localuser/.ssh
/id_rsa
RUSER=remoteuser
RHOST=remotehost
RPATH=/remote/dir
LPATH=/this/dir
$RSYNC
-az—delte
-e
“$SSH
-i
$KEY”
$RUSER@$RHOST:$RPATH
$LPATH
-a
选项相当于选项
-rlptgoD
。简单来讲,此选项可递归并将几乎所有的东西同步过去,非常有用。注意的是,
-a
默认不会保存
hardlinks
,不过可以单独用
-H
选项来实现。
-z
选项在传输中压缩文件,这无疑加快同步速度。
-delete
选项会删除接受方一些不应存在的文件,此文件在发送方已经被删除,这将保持目录完全同步。
让
cron
每天凌晨1点来跑这个脚本
代码如下
$crontab
-e
0
1
*
*
*
/home/localuser/bin/backup.sh
友情提示
rsync是没有自动启动同步功能了,如果我们要定时去备份一个网站数据我们就需要用到定时功能了,上面的例子来使用到了linux中$crontab命令来定时执行备份数据脚本了哦。
1.跨平台使用;2.对内核和用户权限没有特别要求;
3.Unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略;
4.只要是能连通的两台主机,就可以运行unison,可以直接使用socket连接或安全的ssh连接方式,对带宽的要求不高,使用类似rsync的压缩传输协议。
可以使用scp命令。具体方法:
scp 本地用户名@IP地址:文件名 1 远程用户名 @IP 地址 : 文件名 2
[ 本地用户名 @IP 地址:] 可以不输入 , 可能需要输入远程用户名所对应的密码 。
可能有用的几个参数 :
-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .
-C 使能压缩选项 .
-P 选择端口 . 注意 -p 已经被 rcp 使用 .
-4 强行使用 IPV4 地址 .
-6 强行使用 IPV6 地址 .
-r Recursively copy entire directories.
如——
copy 本地的档案到远程的机器上
scp /etc/lilo.conf
会将本地的 /etc/lilo.conf 这个档案 copy 到使用者my 的家目录下。
举例:
copy 本地的档案到远程的机器上
scp /etc/lilo.conf
会将本地的 /etc/lilo.conf 这个档案 copy 到 net67使用者 k 的家目录下。
copy远程机器上的档案到本地来
scp .etc/lilo.conf /etc
会将 中 /etc/lilo.conf 档案 copy 到本地的 /etc 目录下。
保持从来源 host 档案的属性
scp –p k@net67.:/etc/lilo.conf /etc
在此必须注意使用者的权限是否可读取远程上的档案,若想知道更多关于 scp 的使用方法,可去看看 scp 的使用手册。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)