4 releases
0.1.3 | Dec 27, 2022 |
---|---|
0.1.2 | Dec 27, 2022 |
0.1.1 | Dec 27, 2022 |
0.1.0 | Dec 27, 2022 |
#3 in #mv
22 downloads per month
13KB
201 lines
sync_mv
Overview
Generates a script containing mkdir
and mv
commands that moves the files in the dst
folder to
match the file structure of the src
folder.
This utility is helpful for avoiding file copy (often from a remote computer) when using rsync
and
the files in the src
folder have been moved:
-
It detects a file that have been moved in
src
that already existing indst
, and generate amv
command to move the file. -
It detects duplication with file size and modified date. So it's assuming
rsync
is copying the file attributes over. E.g., usingrsync -a
. -
By default files smaller than 1MB is ignored, since copying them with
rsync
does not add much time. The threshold can be controlled by the--min-file-size
flag. -
All symlinks are ignored.
Command:
sync_mv --action digest --folder source_folder --min-file-size 1000000 > src.json
# or: ssh user@host_ip '/home/user/sync_mv --action digest --folder source_folder --min-file-size 1000000' > src.json
sync_mv --action digest --folder destination_folder --min-file-size 1000000 > dst.json
sync_mv --action diff --src src.json --dst dst.json > diff.txt
The above command generates a diff.txt containing the command to run. You can inspect the file and
run it and then optionally sync the folders with rsync
. E.g.,
bash diff.txt
rsync -avh source_folder destination_folder
Installation
- install cargo
- run
cargo install sync_mv
License
MIT
Dependencies
~1.6–2.6MB
~51K SLoC