是否可以在不使用 sudo 的情况下安装 rsync?

是否可以在不使用 sudo 的情况下安装 rsync?

我可以访问一个网络服务器(一个通用的廉价 PHP 主机),其中有一堆我想要备份的较小文件。我可以使用 FTP 访问,但速度很慢。我可以使用 复制文件scp,但必须先手动压缩,因为-C 参数在发送之前压缩每个文件,而不是所有文件。理想情况下,我只想rsync像平常一样使用。服务器管理员告诉我他们不会安装它。是否可以在不访问aptsudo作为便携式二进制文件的情况下安装它?

我在 Ubuntu 上找到了 rsync 二进制文件https://download.samba.org/pub/rsync/binaries/ubuntu-20.04-x86_64/(通过https://rsync.samba.org/download.html)。设置后chmod +x,我收到此错误:

[user@server]$ ./rsync
./rsync: error while loading shared libraries: libxxhash.so.0: cannot open shared object file: No such file or directory

有没有一种巧妙的方法可以一次性获取丢失的库文件?

服务器似乎正在运行 Red Hat:

[user@server]$ cat /proc/version 
Linux version 3.10.0-962.3.2.lve1.5.49.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Thu Mar 4 05:39:46 EST 2021

我没有看到rsync该发行版的预编译版本。在这里做什么?由于缺少库(很可能),我无法在服务器上编译内容。

依赖关系

berndbausch 在评论中询问 的结果ldd rsync,该结果应该显示所需的库:

linux-vdso.so.1 => (0x00007ffe589a3000)
libacl.so.1 => /lib64/libacl.so.1 (0x00007f6a681a5000) 
libz.so.1 => /lib64/libz.so.1 (0x00007f6a67f8f000) 
libpopt.so.0 => /lib64/libpopt.so.0 (0x00007f6a67d85000) 
liblz4.so.1 => /lib64/liblz4.so.1 (0x00007f6a67b76000) 
libzstd.so.1 => /lib64/libzstd.so.1 (0x00007f6a6789d000) 
libxxhash.so.0 => not found 
libcrypto.so.1.1 => not found 
libc.so.6 => /lib64/libc.so.6 (0x00007f6a674cf000) 
libattr.so.1 => /lib64/libattr.so.1 (0x00007f6a672ca000) 
/lib64/ld-linux-x86-64.so.2 (0x00007f6a683ae000)

所以看起来只有 2 个缺失。

Rsync从本地机器到服务器

有人在现已删除的评论中建议尝试通过 ssh 从本地 rsync 到服务器,而不是相反。这是行不通的。它会给像这样的错误:

rsync -zarvh [email protected]:/var/www/html/release /var/www/html/release
bash: rsync: command not found

答案1

将 rsync 和所需的缺失库解压到例如$HOME/rsync

rsync这样运行:

cd $HOME/rsync
LD_LIBRARY_PATH=. ./rsync
# or
export LD_LIBRARY_PATH=$HOME/rsync
$HOME/rsync/rsync

在哪里可以找到这些缺失的库可供下载?

  1. 运行rsync,你会看到缺少的库。
  2. 对于每个人运行以下命令:dnf whatprovides '*/library.so'
  3. 从任何镜像下载所需的 RPM
  4. 使用egrpm2cpio和thencpio -idv -F file.cpio来提取RPM。

最后,您可以在另一台 PC 上静态编译 rsync 并将生成的文件复制回您的服务器。

相关内容