Performing file-level backup, you risk losing metadata:
File ownership, permissions, ACLs
Extended attributes, capabilities, etc.
I’m not sure whether tar backups are affected by these issues and to what extent.
So, you should be careful, especially if you plan to back up system directories since losing critical metadata might make your system inoperable.
Depending on the data type and size, block-level or filesystem-level backups might be preferable.
In general, only a verified copy on a reliable separate storage can be considered a good backup.
Ignoring the metadata-related issues, I personally prefer rsync backups since it’s easier to update, very and restore.
In every instance where I have used rsync it handles file names with spaces, parentheses, and other special characters properly, keeping the file name intact. I find that cp, tar, and the like do not.
To see the differences simply run the “ls” command in a directory that has file names with spaces or other special characters and you will note that those file names are surrounded by double quotes while file names that are linux/unix standard (no spaces or special characters) do not show the quotes.
Since windows has never been linux/unix compliant with respect to file and directory naming, the errors you see with tar often crop up when transferring files between the two systems. Rsync has been one of the tools designed to transfer files between systems without errors in file naming.
After this round of transfer of 2.7TB of files, I will stick with rsync for file level transfers from now on.
A few questions:
how to prevent spase qcow2 files become fully allocated after rsync?
when the file is not exist in target
when the target exist in target but needs update
how to make rsync work nicely with COW btrfs filesystem? So far, I googled and used this: rsync --inplace --info=progress2 --no-whole-file -a source/ btrfs/
I so far only run rsync interactively, I would like as much progress indication as possible, like which file is being compared, which file is being transmitted, how much changed of each file, etc. With --info=progress2, I only got this one line staus: 0 0% 0.00kB/s 0:00:00 (xfr#0, ir-chk=2025/18024)
What parameters can provide such progress indications while rysnc is running?