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
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 (email@example.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).
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 firstname.lastname@example.org:/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.
lddoutput to question text. Good idea.