非常适合在两台机器之间快速同步大型、复杂的目录,例如论坛的附件目录。再配合
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命令来定时执行备份数据脚本了哦。
没有比文档更详细的了http://linux.die.net/man/1/rsync如果只是想做简单的文件(夹)同步,使用
rsync -az /you/file/path root@11.22.33.44:/rsync/file/to/path
其他一些常用rsync命令可以参考
http://www.tecmint.com/rsync-local-remote-file-synchronization-commands/
rsync默认使用差量传输技术,只传输差量数据
1. 前言
linux之间传文件命令用什么命令?本文介绍一种最常用,也是功能强大的文件同步和传输工具Rsync,本文提供详细傻瓜式教程。
在本教程中,我们将通过实际使用案例和最常见的rsync选项的详细说明向您展示如何使用rsync。
本教程适用于Ubuntu系统、Linux Mint系统、Deepin深度Linux系统、Fedora系统、Debian系统、Elementary OS系统、OpenSUSE系统、CentOS系统、RHEL系统,Arch Linux等等GNU Linux发行版。
2. `rsync`介绍
Rsync是一个快速且通用的命令行实用程序,它可以使Windows与Linux之间,Linux与Linux之间传文件或者Linux与MAC OS之间传文件。或从Linux本地文件系统到远程Rsync守护进程之间同步文件和文件夹。它只传输源和目标之间的差异,从而提供快速增量文件传输。
Rsync可以用于镜像数据、增量备份、在Linux系统之间传文件,也可以用于Linux与Windows之间传输文件,还可以替代日常使用的scp、sftp和cp命令,他们一般也用于Linux之间传文件或者Linux与MAC OS之间传文件。
3. 如何安装`Rsync`
rsync实用程序预装在大多数Linux发行版和macOS上。你可以输入以下命令,检查你的系统是否已安装:
查看Rsync版本的输出结果:
如果您的系统上没有安装rsync,您可以使用发行版的包管理器轻松地安装它。
在Ubuntu 或者Debian体系的Linux系统上安装rsync
在CentOS 或者Fedora系统上安装rsync
4. Rsync命令使用语法
在讨论如何使用rsync命令之前,让我们先回顾一下基本语法。
rsync实用程序表达式采用以下形式:
rsync提供了许多选项来控制其行为和功能。最广泛使用的选项是:
-a, --archive, 归档模式, 相当于 -rlptgoD。这个选项告诉rsync递归地同步目录、传输特殊设备和块设备、保存符号链接、修改时间、组、所有权和权限。
-z, --compress. 这个选项将强制rsync在传送文件到目标计算机时压缩数据。仅当到远程计算机的连接很慢时才使用此选项。
-P, 相当于--partial --progress。使用此选项时,rsync将在传输期间显示一个进度条,并保留部分传输的文件。当通过缓慢或不稳定的网络连接传输大文件时,它非常有用。
--delete. 使用此选项时,rsync将从目标位置删除无关文件。它对镜像很有用。
-q, --quiet。如果希望禁用非错误消息,请使用此选项。
-e. 此选项允许您选择不同的远程shell。默认情况下,rsync被配置为使用ssh。
5. 使用Rsync最基本的功能使Linux之间传输文件
要将一个文件从一个本地位置复制到另一个本地位置,可以运行以下命令:
运行该命令的用户必须具有目标位置上的读权限和目标上的写权限。
从目标位置省略文件名将复制具有当前名称的文件。如果您想将文件保存在另一个名称下,请在目标部件上指定新名称:
比如复制filename.zip到目标目录并重新把文件名修改为newfilename.zip
在下面的例子中,我们正在创建一个本地备份我们的网站文件:
如果目标目录不存在,rsync将创建它。
值得一提的是,rsync对后面带有斜杠/的源目录提供了不同的处理。如果在源目录上添加一个尾随斜杠,它将只将目录的内容复制到目标目录。当后面的斜杠被省略时,rsync将把源目录复制到目标目录中。
6. 如何使用Rsync与远程服务器同步文件(包括上传下载)
当使用rsync进行远程传输时,必须同时安装在源机器和目标机器上。rsync的新版本被配置为使用SSH作为默认远程shell。
在下面的例子中,我们将一个目录从本地转移到远程机器:
如果你需要配置2台Linux之间免密码登录,请查看以下教程:
如果你想把数据从远程传输到本地机器,你需要使用远程位置作为一个源:
如果远程主机上的SSH监听的端口不是默认的22端口,那么可以使用-e选项指定端口:
比如远程服务器的SSH端口被修改为1234
当传输大量数据时,建议在屏幕会话中运行rsync命令或使用-P选项:
7. 使用Rsync传送或同步文件时,排除某些文件或者目录
当使用Rsync排除文件或目录时,需要使用它们到源位置的相对路径。
有两个选项可以排除文件和目录。第一个选项是使用--exclude参数,并在命令行中指定要排除的文件和目录。
在下面的例子中,我们排除了位于src_directory中的123和abc目录:
第二个选项是使用--exclude-from参数,并指定要在文件中排除的文件和目录。
vi exclude-file.txt
加入需要排除的文件,比如文件file1.c,目录zcwyou:
8. 总结
在本教程中,您学习了如何使用Rsync在多台Linux之间传输、复制或同步文件和目录。在Rsync用户手册页面上有更多关于Rsync的内容。
如果你有任何问题,请留下你的意见。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)