github fcorbelli/zpaqfranz 61.1
Windows 32/64 binaries, 64 bit-HW accelerated

latest releases: 64.2, 64.1, 63.8...
11 months ago

This is a brand new branch (61), that introduces significant changes.

Since this is the very first release, as usual, there may be bugs and instability, especially in the newly introduced features.

User feedback is essential (please open the relevant issues on GitHub) to improve the product.

First Big Thing: SFTP and libcurl

If you define -DSFTP during compilation, the program will dynamically use the libcurl library, if it is available.
On Windows systems, this refers to the libcurl-x64.dll/libcurl.dll.
This DLL can be downloaded from the author's website simply by running zpaqfranz sftp.
For *nix systems, it is typically named libcurl.so (or something similar) and must be installed manually, for example, using pkg add libcurl (on FreeBSD) or equivalent commands.
If it cannot be made to work, zpaqfranz will return an error.
On *nix systems, the location of libcurl.so might not be known: there are many different systems, and it can be found almost anywhere.
Therefore, you need to ensure it is in the current path, or you need to evolve this function by adding the correct path.

static string findso(const std::string& i_libname)
"",              
"/usr/lib/",
"/usr/local/lib/",
"/lib/",
"/usr/lib64/",
"/usr/local/lib64/",
"./",
"/usr/lib/x86_64-linux-gnu/"

Usually libcurl can be installed with something like

debian:         apt install libcurl
red hat/centos: yum install libcurl
fedora:         dnf install libcurl
suse:           zypper install libcurl4
FreeBSD:        pkg install curl
OpenBSD:        doas pkg_add curl
NetBSD:         pkgin install curl
MacOS:          brew install curl
Arch:           pacman -S curl
Gentoo:         emerge --ask net-misc/curl
Slackware:      slackpkg install curl
Void:           xbps-install -S curl
Alpine:         apk add curl
OpenIndiana:    pkg install library/curl
Solaris:        pkg install curl
Haiku:          pkgman install curl
Clear Linux:    swupd bundle-add curl

It's up to you

*** BUT REMEMBER: DO NOT USE -static WITH -DSFTP ON *NIX ***

TRANSLATION

zpaqfranz can upload data directly from a local source to an SFTP server (currently only with username and password, but key file support will be added soon).

Only the necessary portion of data is uploaded, minimizing traffic as much as possible. Additionally, a validation process is performed (albeit a very basic one, as it needs to be fast) to ensure correct uploads.

What is the typical use case?

On *nix target systems, such as NAS devices or cloud servers, it is common to use the rsync-over-ssh combination with the --append option to upload zpaqfranz data. This is a solid and reliable method.

However, this setup is not always easily available on Windows machines, where rsync and ssh clients are typically not preinstalled and require manual configuration, adding complexity.

Starting from version 61+, zpaqfranz operates independently. This is particularly useful in scenarios where Windows clients upload data to Samba shares (a common case in LAN networks with NAS devices like QNAP, Synology, etc.).

Using Samba shares poses a ransomware risk, as client programs can write to network shares. Instead, by enabling the corresponding SFTP servers and setting up username-password pairs, zpaqfranz can upload data via the SFTP protocol instead of Samba.

This means that if a Windows client is hit by ransomware, it may encrypt Samba shares, but it cannot access or encrypt the emergency backups uploaded via SFTP, since the SFTP credentials are different and typically stored in batch files.

Hope this makes sense! Otherwise... feel free to ask!

How to use??

On Windows systems, when zpaqfranz first attempts an SFTP connection, it checks for the required DLL.
If the DLL is not found, it will automatically download it from my website.
This means that if you don't use SFTP, the related code won't take up any space.

On *nix systems, the situation is more complex because (as mentioned earlier) the curl library can be installed in various locations.
zpaqfranz attempts to locate it automagically, but success is not guaranteed.

Once again, let me emphasize the point mentioned above:

On *nix, DO NOT compile the program statically if using -DSFTP.

Some systems will work, while others won't. (Feel free to ask for technical details if you encounter issues.)

Second Big thing: tui

I have implemented a minimal interface with the tui command to list files, select them, and optionally extract them.
This is a stripped-down version of the previous ncurses-based GUI.
1

It resembles DOS programs from forty years ago, but it has a major advantage:
it also works on *nix systems (though not on very old ones).

There are a ton of issues, as there are countless edge cases that require debugging.
But hey, it's a start!

To view the list of commands, press h or ?.

Third big thing: ls

I have also implemented the ls command, which roughly allows you to navigate a zpaq archive like a filesystem.
You can use ls (/dir) to list directories, cd to move between them, and get to download files.
2

This feature is still very immature and requires a lot of additional work, especially for handling edge cases (and TAB key support).

As with tui, you can use help or ? to see the list of available commands.

Small things

-noonedrive

This will disable the Windows' onedrive placeholders. AKA: do NOT download everything from OneDrive to local drive

-norecursion with -only in list

Do not recurse inside folders, during l (list) with -only
#156

Removed SERVER Code

The zpaqfranz-over-TCP project has been replaced by SFTP

Removed Windows GUI Code with ncurses

Now there's a TUI with the command tui

Experimental switch -DNOLM

To use "software" implementation for some numeric functions, and do NOT use anymore the lm library. For "strange things"

Fixed some linuxsettime

Status

The sftp command is developed and tested at about 70%.
The tui command is roughly 50% complete.
The ls command is maybe 30% done.

Download zpaqfranz

Don't miss a new zpaqfranz release

NewReleases is sending notifications on new releases.