I have access to a webserver (a generic cheap PHP host) which has a bunch of smaller files that I want to take backups of. I can access with FTP but this is very slow. I can copy the files with scp
, but one has to manually compress first, since the -C
argument compresses each file, not all files, before sending. Ideally, I would just like to use rsync
like normal. The server admin told me they would not install it. Is it possible to install this without access to apt
or sudo
as a portable binary?
I found the rsync binary for Ubuntu at https://download.samba.org/pub/rsync/binaries/ubuntu-20.04-x86_64/ (via https://rsync.samba.org/download.html). After setting chmod +x
, I get this error:
[user@server]$ ./rsync
./rsync: error while loading shared libraries: libxxhash.so.0: cannot open shared object file: No such file or directory
Is there a clever way to acquire the missing library files all at once?
The server appears to be running Red Hat:
[user@server]$ cat /proc/version
Linux version 3.10.0-962.3.2.lve1.5.49.el7.x86_64 (mockbuild@buildfarm03.cloudlinux.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Thu Mar 4 05:39:46 EST 2021
I don't see a precompiled version of rsync
for this distro. What to do here? I cannot compile things on the server due to lacking libraries (very likely).
Dependencies
berndbausch asks in comments about the result of ldd rsync
, which should show the required libraries:
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)
So it appears there are only 2 missing ones.
Rsync
from local machine to sercer
Someone suggested in a now deleted comment to try rsync from local via ssh to server instead of the other way around. This doesn't work. It will give an error like this one:
rsync -zarvh oem@172.20.0.12:/var/www/html/release /var/www/html/release
bash: rsync: command not found
ldd ./rsync
. You get better compression efficiency by compressing the 1 big file (the archive) than by compressing any number of small files individually.ldd
output to question text. Good idea.