在 systemd 上安装 rsync 3.1.1

在 systemd 上安装 rsync 3.1.1

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

现在守护进程拒绝启动。我尝试创建:

/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)

注意配置中引用的文件存在:

-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

答案1

我在 Fedora 22 下安装了 3.1.1。

所需的配置文件rsyncd位于rsync-daemon软件包中。我已将每个软件包中的文件列在下面。

我只想安装额外的包。

但是,我确实注意到您的配置文件中有一个拼写错误……

改变:

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包的一部分]和cpiopax[非常类似于tar,但理解两个都 tarcpio格式化档案。

我通常使用 会更成功pax。它有自己的 rpm [安装:yum install pax]。事实上,我从来没有让该rpm2cpio/cpio组合正确地用于提取。

要使用以下命令列出 rpm 文件pax

rpm2cpio rpmfile | pax -v

要使用以下命令提取 rpm 文件pax

rpm2cpio rpmfile | pax -v -r

我也尝试过直接提取文件,但是它仍然无法启动。

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

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

此外,您可能必须向/etc文件中添加一些内容,因为它本身可能rsync不想启动(相对于systemd不启动rsync)。

以下是文件的内容rsync-daemon除了手册页文件 [太大了,无法在此处列出]。手册页文件可在此处找到: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/rsync 中

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/系统/[电子邮件保护]

[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

答案2

我发现systemctl daemon-reload需要加载服务。执行此操作后,它立即起作用了。

相关内容