rsync 原本只能用在 Unix/Linux 系统,cwRsync 使用可以模拟 Linux API 的 Cygwin,以实现可以在 Windows 上运行的目的,网址为 https://www.itefix.net/cwrsync 。据说 cwRsync 4.1.0 是最后一个免费版本,不过网上可以下载到更高版本的客户端免费程序,可能收费的只是服务端吧。 服务端建在 Linux 服务器上,直接用 rsync 就可以,所以 Windows 上我只是用 cwRsync 客户端。 下载 cwRsync 5.4.1 https://www.cr173.com/soft/109506.html 解压缩后无需安装即可使用。 cwrsync.cmd 提供了批处理文件参考文件,可以不管它,我们要用的是 rsync 实例,从客户端同步到服务端: rsync -avz --no-owner --no-group --progress --delete --password-file=/cygdrive/C/rsync.pwd /cygdrive/C/Repositories rsync_usr@192.168.1.100::rd.svn 由于 Windows 中文件没有 uid 和 gid 的属性,传输时可能出现: uid 4294967295 (-1) is impossible to set on "/Repositories/Repositories/test2" (in rd.svn) 系统中没有值为 -1 的 uid。所以加上 --no-owner --no-group 从 -a 中排出 uid 和 gid 的属性。 --delete:删除服务器上源中已经不存在文件 --password-file:密码文件 password-file 的格式为一行明文的密码。 注意,路径格式为 unix 格式, /cygdrive/C/ 代表 C:\ 当源是一个目录时,带斜线(/)与不带斜线的处理是不同的。不带斜线时目录自身也会同步到目的(DEST)下。 即 rsync -a src_folder dest_folder,结果会有 dest_folder/src_folder。带斜线时目录自身不同...
分类 工具软件 下的文章
iF.SVNAdmin 安装和使用笔记
iF.SVNAdmin 是一个基于 Web 的 GUI(图形用户界面)工具,用于管理 Subversion 的库和授权文件。 安装 Apache: yum -y install mod_dav_svn #apache svn支持模块 安装 PHP: yum -y install php 安装 Subversion yum -y install subversion svnserve --version #查看版本信息,测试安装是否成功 安装 iF.SVNAdmin: wget https://github.com/mfreiholz/iF.SVNAdmin/archive/stable-1.6.2.tar.gz tar -zxf stable-1.6.2.tar.gz mv iF.SVNAdmin-stable-1.6.2/ /data/svnadmin/ chown -R apache:apache /data/svnadmin/ 在 /etc/httpd/conf.d/ 创建一个虚拟服务器配置:svnadmin-vhost.conf Listen 888 <VirtualHost 192.168.72.100:888> ServerAdmin name@email.com ServerName 192.168.72.100 ErrorLog /etc/httpd/logs/svnadmin-error_log TransferLog /etc/httpd/logs/svnadmin-access_log SSLEngine on SSLCertificateFile /data/ssl/localhost.crt SSLCertificateKeyFile /data/ssl/localhost.key DocumentRoot /data/svnadmin <Directory "/data/svnadmin"> Options FollowSymLinks AllowOverride all Require all granted </Directory> Alias /svn /var/www/svn1 <Location /svn> DAV svn SVNParentPath /data/svn1 AuthzSVNAccessFile /data/svn1/authz AuthUserFile /data/svn1/htpasswd AuthName "Subversion Repositories" AuthType Basic Require valid-user </Location> </VirtualHost> 创建服务目录: mkdir /data/svn1 touch /data/svn1/authz touch /data/svn1/htpasswd chown -R apache:apache /data/svn1 禁用 SELinux: setenforce 0 #临时关闭 vim /etc/selinux/config 将SELINUX=enforcing改为SELINUX=disabled #需要重启 配置防火墙: firewall-cmd --permanent --add-port=888/tcp systemctl restart firewalld systemctl restart httpd.service 打开网页 https://192.168.72.100:888,跳转到初始化配置页面,配置如下: Subversion authorization file: /data/svn1/authz User view provider type: passwd User edit provider type: passwd Group view provider type: svnauthfile Group edit provider type: svnauthfile Repository view provider type: svnclient Repository edit provider type: svnclient User authentication file (SVNUserFile): /data/svn1/htpasswd Parent directory of the repositories (SVNParentPath): /data/svn1 Subversion client executable: /usr/bin/svn Subversion admin executable: /usr/bin/svnadmin 保存配置,提示自动生成管理员账户和密码:User: admin ,Password: admin 编辑配置文件: vim /data/svnadmin/data/config.ini 在[GUI]下增加一行: ApacheDirectoryListing=https://192.168.72.100:888/svn/%1/%2 源码修改记录: function xml_svn_list_character_data($xml_parser, $tagdata) 中的 $this->curList->curEntry->name.= self::encode_string(trim($tagdata)); trim函数会使 “01 测试”类似的字符与汉字间的空格也被清掉,临时换用ltrim来解决这个问题。 改为: $this->curList->curEntry->name.= self::encode_string(ltrim($tagdata)); 中文库名的支持: 从 1.7 版本开始使用 Apache + SVN,虽然在默认的情况下,mod_dav_svn 支持库内出现非纯英文命名的文件夹或文件名,但是一直不支持库名中出现非纯英文的字符。 试了很多方法都不能解决,偶然间了解到 mod_dav_svn 使用 7 位的 ASCII 编码与其钩子脚本交互,所以对于 UTF-8 等多字节的编码是不支持的,所以总会出现 Internal error: Can't convert string from 'UTF-8' to native encoding,即使库名已经使用了 UTF-8 编码也不行。 从 1.8 版本开始支持 SVNUseUTF8 On|Off 配置,在 httpd.conf 中添加一行: SVNUseUTF8 On 就可以支持中文的库名...