Having made a slight cock-up, I want to use rsync to move all the files
that exist on one server but not the other into a separate heirarchy.
More fully:
I have two identical servers, the second of which rsyncs itself from the other overnight. This morning, due to an oversight, I put a load of
files into a directory structure that were intended to go into a
subfolder of it. What I want to do is rsync from the second server to
the first and move files that only exist on the first into a directory
tree elsewhere on the server, so that then I can move that extraneous
tree back into the originally intended subfolder. Something like this:
On 2025-10-21, Java Jive wrote:
Having made a slight cock-up, I want to use rsync to move all the files
that exist on one server but not the other into a separate heirarchy.
More fully:
I have two identical servers, the second of which rsyncs itself from the
other overnight. This morning, due to an oversight, I put a load of
files into a directory structure that were intended to go into a
subfolder of it. What I want to do is rsync from the second server to
the first and move files that only exist on the first into a directory
tree elsewhere on the server, so that then I can move that extraneous
tree back into the originally intended subfolder. Something like this:
rsync doesn't 'move'.
*IF* you've already moved the relevant files from /src/wrongdir to /src/correctdir ; then you can rsync with "--delete" to delete those
files on /dest/ that are no longer in /src/ (i.e. 'got moved from
/src/wrong/ to /src/correct/').
I would definitely do the --dry-run, and read it *very* closely, to make
sure the rsync isn't removing more than I expect.
On 2025-10-21 14:49, Dan Purgert wrote:
On 2025-10-21, Java Jive wrote:
Having made a slight cock-up, I want to use rsync to move all the files
that exist on one server but not the other into a separate heirarchy.
More fully:
I have two identical servers, the second of which rsyncs itself from the >>> other overnight. This morning, due to an oversight, I put a load of
files into a directory structure that were intended to go into a
subfolder of it. What I want to do is rsync from the second server to
the first and move files that only exist on the first into a directory
tree elsewhere on the server, so that then I can move that extraneous
tree back into the originally intended subfolder. Something like this:
rsync doesn't 'move'.
*IF* you've already moved the relevant files from /src/wrongdir to
/src/correctdir ; then you can rsync with "--delete" to delete those
files on /dest/ that are no longer in /src/ (i.e. 'got moved from
/src/wrong/ to /src/correct/').
I would definitely do the --dry-run, and read it *very* closely, to make
sure the rsync isn't removing more than I expect.
Yes, after posting I did a test along the following lines which proved
the files would be deleted, not moved ...
mkdir 1temp 2temp elsewhere
touch 1temp/test
touch 2temp/extratest
rsync -a --backup-dir=elsewhere 1temp/ 2temp/
ls -al 1temp
.
..
test
ls -al 2temp
.
..
test
ls -al elsewhere
.
..
:-(
On 2025-10-21, Java Jive wrote:
On 2025-10-21 14:49, Dan Purgert wrote:
On 2025-10-21, Java Jive wrote:
Having made a slight cock-up, I want to use rsync to move all the files >>>> that exist on one server but not the other into a separate heirarchy.rsync doesn't 'move'.
More fully:
I have two identical servers, the second of which rsyncs itself from the >>>> other overnight. This morning, due to an oversight, I put a load of
files into a directory structure that were intended to go into a
subfolder of it. What I want to do is rsync from the second server to >>>> the first and move files that only exist on the first into a directory >>>> tree elsewhere on the server, so that then I can move that extraneous
tree back into the originally intended subfolder. Something like this: >>>
*IF* you've already moved the relevant files from /src/wrongdir to
/src/correctdir ; then you can rsync with "--delete" to delete those
files on /dest/ that are no longer in /src/ (i.e. 'got moved from
/src/wrong/ to /src/correct/').
I would definitely do the --dry-run, and read it *very* closely, to make >>> sure the rsync isn't removing more than I expect.
Yes, after posting I did a test along the following lines which proved
the files would be deleted, not moved ...
mkdir 1temp 2temp elsewhere
touch 1temp/test
touch 2temp/extratest
rsync -a --backup-dir=elsewhere 1temp/ 2temp/
ls -al 1temp
.
..
test
ls -al 2temp
.
..
test
ls -al elsewhere
.
..
:-(
rsync cannot "backup" something it doesn't know about or isn't
changing... likewise your command shouldn't have deleted "extratest"
dan@framework:~/rsync$ mkdir 1temp 2temp elsewhere
dan@framework:~/rsync$ touch 1temp/test
dan@framework:~/rsync$ touch 2temp/extratest
dan@framework:~/rsync$ rsync -av --backup-dir=elsewhere 1temp/ 2temp/
sending incremental file list
./
test
sent 116 bytes received 38 bytes 308.00 bytes/sec
total size is 0 speedup is 0.00
dan@framework:~/rsync$ ls -la 1temp
total 8
drwxr-xr-x 2 dan dan 4096 Oct 21 11:31 .
drwxr-xr-x 5 dan dan 4096 Oct 21 11:31 ..
-rw-r--r-- 1 dan dan 0 Oct 21 11:31 test
dan@framework:~/rsync$ ls -la 2temp
total 8
drwxr-xr-x 2 dan dan 4096 Oct 21 11:31 .
drwxr-xr-x 5 dan dan 4096 Oct 21 11:31 ..
-rw-r--r-- 1 dan dan 0 Oct 21 11:31 extratest
-rw-r--r-- 1 dan dan 0 Oct 21 11:31 test
dan@framework:~/rsync$ ls -la elsewhere
total 8
drwxr-xr-x 2 dan dan 4096 Oct 21 11:31 .
drwxr-xr-x 5 dan dan 4096 Oct 21 11:31 ..
Now, if we add in '--delete' ...
dan@framework:~/rsync$ rsync -av --delete --backup-dir=elsewhere 1temp/ 2temp/ sending incremental file list
deleting extratest
sent 70 bytes received 25 bytes 190.00 bytes/sec
total size is 0 speedup is 0.00
dan@framework:~/rsync$ ls -la 1temp
total 8
drwxr-xr-x 2 dan dan 4096 Oct 21 11:31 .
drwxr-xr-x 5 dan dan 4096 Oct 21 11:31 ..
-rw-r--r-- 1 dan dan 0 Oct 21 11:31 test
dan@framework:~/rsync$ ls -la 2temp
total 12
drwxr-xr-x 3 dan dan 4096 Oct 21 11:31 .
drwxr-xr-x 5 dan dan 4096 Oct 21 11:31 ..
drwxr-xr-x 2 dan dan 4096 Oct 21 11:33 elsewhere
-rw-r--r-- 1 dan dan 0 Oct 21 11:31 test
dan@framework:~/rsync$ ls -la elsewhere
total 8
drwxr-xr-x 2 dan dan 4096 Oct 21 11:31 .
drwxr-xr-x 5 dan dan 4096 Oct 21 11:31 ..
dan@framework:~/rsync$ ls -la 2temp/elsewhere/
total 8
drwxr-xr-x 2 dan dan 4096 Oct 21 11:33 .
drwxr-xr-x 3 dan dan 4096 Oct 21 11:31 ..
-rw-r--r-- 1 dan dan 0 Oct 21 11:31 extratest
NOTE -- the deleted file went into "2temp/elsewhere", because of the
behavior of --backup-dir:
Note that if you specify a relative path, the backup directory
will be relative to the destination directory,
On 2025-10-21 16:37, Dan Purgert wrote:Could be a version thing, yeah. Here's what I'm working with:
rsync cannot "backup" something it doesn't know about or isn't
changing... likewise your command shouldn't have deleted "extratest"
My mistake, in my post above I didn't transcribe the process directly because for other reasons I'd already logged out of the server. Below I
do so, but get the same result ...
[...]
Unfortunately, this doesn't happen with this rsync on these QNAP servers whether or not I specify an absolute path to elsewhere:
[user@server Test]# mkdir 1temp 2temp elsewhere
[user@server Test]# touch 1temp/test
[user@server Test]# touch 2temp/extratest
[user@server Test]# rsync -av --backup-dir=elsewhere --delete 1temp/ 2temp/
Realistically though, as I understand your actual situation, this series
of commands is closer to what happened, right?
Sysop: | DaiTengu |
---|---|
Location: | Appleton, WI |
Users: | 1,073 |
Nodes: | 10 (0 / 10) |
Uptime: | 212:21:54 |
Calls: | 13,782 |
Calls today: | 1 |
Files: | 186,987 |
D/L today: |
4,563 files (1,246M bytes) |
Messages: | 2,434,557 |