在systemd上安装rsync 3.1.1

我有CentOS 7,它带有Rsync 3.0.9。 我下载了3.1.1 el7 rpm,并安装了rpm -Uvh。

现在守护进程拒绝启动。 我试图创build:

/usr/lib/systemd/system/rsyncd.service

[Unit] Description=A program for synchronizing files over a network After=syslog.target network.target ConditionPathExists=/etc/rsyncd.conf [Service] EnvironmentFile=-/etc/sysconfig/rsyncd ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS" [Install] WantedBy=multi-user.target 

没有运气 :

 /bin/systemctl status rsyncd.service ● rsyncd.service Loaded: not-found (Reason: No such file or directory) Active: failed (Result: exit-code) since Thu 2016-04-21 15:27:00 EDT; 56min ago Main PID: 1452 (code=exited, status=20) 

注意configuration中的那些引用文件存在:

 -rw-r--r-- 1 root root 1699 Feb 4 14:27 /etc/rsyncd.conf -rw-r--r-- 1 root root 11 Apr 21 16:09 /etc/sysconfig/rsyncd 

我有fedora 22下的3.1.1。

rsyncd的必要configuration文件位于rsync-daemon软件包中。 我列出了下面每个包中的文件。

我只是安装额外的软件包。

但是,我注意到你的configuration文件中有一个错字。

更改:

 EnvironmentFile=-/etc/sysconfig/rsyncd 

成:

 EnvironmentFile=/etc/sysconfig/rsyncd 

以下是rsync包中的文件列表:

 /usr/bin/rsync /usr/share/doc/rsync /usr/share/doc/rsync/NEWS /usr/share/doc/rsync/OLDNEWS /usr/share/doc/rsync/README /usr/share/doc/rsync/support /usr/share/doc/rsync/support/Makefile /usr/share/doc/rsync/support/atomic-rsync /usr/share/doc/rsync/support/cvs2includes /usr/share/doc/rsync/support/deny-rsync /usr/share/doc/rsync/support/file-attr-restore /usr/share/doc/rsync/support/files-to-excludes /usr/share/doc/rsync/support/git-set-file-times /usr/share/doc/rsync/support/instant-rsyncd /usr/share/doc/rsync/support/logfilter /usr/share/doc/rsync/support/lsh /usr/share/doc/rsync/support/lsh.sh /usr/share/doc/rsync/support/mapfrom /usr/share/doc/rsync/support/mapto /usr/share/doc/rsync/support/mnt-excl /usr/share/doc/rsync/support/munge-symlinks /usr/share/doc/rsync/support/rrsync /usr/share/doc/rsync/support/rsync-no-vanished /usr/share/doc/rsync/support/rsync-slash-strip /usr/share/doc/rsync/support/rsyncstats /usr/share/doc/rsync/support/savetransfer.c /usr/share/doc/rsync/tech_report.tex /usr/share/licenses/rsync /usr/share/licenses/rsync/COPYING /usr/share/man/man1/rsync.1.gz 

以下是rsync-daemon软件包中的文件列表:

 /etc/rsyncd.conf /etc/sysconfig/rsyncd /usr/lib/systemd/system/rsyncd.service /usr/lib/systemd/system/rsyncd.socket /usr/lib/systemd/system/[email protected] /usr/share/man/man5/rsyncd.conf.5.gz 

更新:

我试图强制在我的Centos 7上安装rsync-daemon,因为它只是文本文件,我趁机忽略了依赖关系。

我不知道你的依赖是什么意思,但我看着rpm的.spec文件,它列出了systemd-units ,但我找不到一个rpm。

没有运气。

不太清楚这是什么意思。 文件是否提取/安装? 你可以做ls -l吗? 作为最后的手段,你尝试rpm --nodeps --force

给定一个.rpm文件,可以使用rpm2cpio [应该是已经安装的rpm软件包的一部分]和cpio或者pax [非常类似于tar ,但是理解tarcpio格式档案]来手动提取文件。

我通常使用pax运气更好。 它有自己的rpm [安装: yum install pax ]。 事实上,我从来没有得到rpm2cpio/cpio组合来正确提取。

使用pax列出rpm文件:

 rpm2cpio rpmfile | pax -v 

使用pax提取rpm文件:

 rpm2cpio rpmfile | pax -v -r 

我也尝试直接提取文件,但它仍然拒绝启动。

您可能需要查阅一些日志文件,例如/var/log/messages/var/log/secure journalctl/var/log/secure ,并且可能必须使用journalctl程序来查看systemd日志。

你可能有一些愚蠢的selinux安全限制必须修复。 您可能需要在configuration文件上运行restorecon

此外,你可能需要添加一些东西到/etc文件,因为它可能是rsync本身不想启动(vs. systemd不启动rsync )。

以下是rsync-daemon文件的内容, 除了手册页文件[这里太大而不能包含在这里]。 手册页文件可以在这里find: http : //linux.die.net/man/5/rsyncd.conf


/etc/rsyncd.conf

 # /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # configuration example: # uid = nobody # gid = nobody # use chroot = yes # max connections = 4 # pid file = /var/run/rsyncd.pid # exclude = lost+found/ # transfer logging = yes # timeout = 900 # ignore nonreadable = yes # dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 # [ftp] # path = /home/ftp # comment = ftp export area 

的/ etc / SYSCONFIG / rsyncd的

 OPTIONS="" 

/usr/lib/systemd/system/rsyncd.service

 [Unit] Description=fast remote file copy program daemon ConditionPathExists=/etc/rsyncd.conf [Service] EnvironmentFile=/etc/sysconfig/rsyncd ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS" [Install] WantedBy=multi-user.target 

/usr/lib/systemd/system/[email protected]

 [Unit] Description=fast remote file copy program daemon ConditionPathExists=/etc/rsyncd.conf [Service] EnvironmentFile=/etc/sysconfig/rsyncd ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS" StandardInput=socket 

/usr/lib/systemd/system/rsyncd.socket

 [Unit] Description=Rsync Server Socket Conflicts=rsyncd.service [Socket] ListenStream=873 Accept=yes [Install] WantedBy=sockets.target 

我发现systemctl daemon-reload是需要加载服务。 这样做之后,它马上就起作用了。