我有 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
包的一部分]和cpio
或pax
[非常类似于tar
,但理解两个都 tar
和cpio
格式化档案。
我通常使用 会更成功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
需要加载服务。执行此操作后,它立即起作用了。