Both xfs_copy and xfsdump can be used for xfs backup, the question is are they same? What's different?
Here are few obvious differences in quick summary:
XFS backup mode
xfs_copy just simply copy the whole files system.
While xfsdump options allow the operator to have all files dumped, just files that have changed since a previous dump, or just files contained in a list of pathnames. xfsdump backs up files and their attributes in a files ystem.The files are dumped to storage media, a regular file, or standard output.
XFS source file system status
xfs_copy should only be used to copy unmounted filesystems, read-only mounted filesystems, or frozen filesystems. Otherwise, the generated filesystem(s) would be inconsistent or corrupt.
xfsdump is used to create a backup for online XFS file system
Both xfs_copy and xfsdump do not alter the source file system in any way.
Target XFS file system size/space cost
If the target file does not exist, xfs_copy creates the file. The length of the resulting file is equal to the size of the source filesystem. However, if the file is created on an XFS filesystem, the file consumes roughly the amount of space actually used in the source filesystem by the filesystem and the XFS log. The space saving is because xfs_copy seeks over free blocks instead of copying them and the XFS filesystem supports sparse files efficiently.
While xfsdump creates a dump file(s) that just contain files.
The target of xfs_copy can be either device or a regular file, in which case an image of the source XFS filesystem is created in that file. Both device/image can be mounted directly.
While xfsdump target are dump format, has to be restored by xfsrestore.
Multiple targets in parallel
xfs_copy copies an XFS filesystem to one or more targets in parallel. The first (source) argument must be the pathname of the device or file containing the XFS filesystem. The remaining arguments specify one or more target devices or file names. If the pathnames specify devices, a copy of the source XFS filesystem is created on each device.
While xfsdump does support multiple targets. However, xfsdump splits the whole backup into multiple media devices.
Copy streams and blocksize
xfs_copy uses synchronous writes to ensure that write errors are detected. xfs_copy uses pthreads(7) to perform simultaneous parallel writes. xfs_copy creates one additional thread for each target to be written. All threads die if xfs_copy terminates or aborts.
xfsdump also use multiple
Target file system identifier(UUID)
Not like dd or other programs that do block by block disk copying. xfs_copy or xfsdump generate the new file system(s) instead of dd(1) or other programs that do block-by-block disk copying. Each new (target) file system is identical to the original file system except that new file systems each have a new unique file system identifier (UUID). Therefore, if both the old and new file systems will be used as separate distinct file systems,
XFS file system migration considerations
When moving filesystems from one disk to another, if the original filesystem is significantly smaller than the new filesystem, and will be made larger, we recommend that mkfs.xfs(8) and xfsdump(8)/xfsrestore(8) be used instead of using xfs_copy and xfs_growfs(8). The filesystem layout resulting from using xfs_copy/xfs_growfs is almost always worse than the result of using mkfs.xfs/xfsdump/xfsrestore but in the case of small filesystems, the differences can have a significant performance impact. This is due to the way xfs_growfs(8) works, and not due to any shortcoming in xfs_copy itself.