1

I've read dozens of other answers for this but none of them are working.

I have a number of directories like this

Demultiplexing/Run1/analysis/
Demultiplexing/Run1/output/
Demultiplexing/Run2/analysis/
Demultiplexing/Run2/output/
OtherProjects/Run1/analysis/
OtherProjects/Run1/output/
OtherProjects/Run2/analysis/
OtherProjects/Run2/output/

I want to copy the following:

  • only Demultiplexing directories

  • only output subdirectories

  • exclude files with : in the name

I have been trying variations on the following command:

remote_dir="/home/$(whoami)/production"
remote_server="server.org"
production_dir="/data/production"
rsync --dry-run -vrthP -e ssh "${production_dir}/" "$(whoami)"@"${remote_server}":"${remote_dir}/" \
--include="Demultiplexing" \
--include="Demultiplexing/*/output" \
--exclude="*:*" \
--exclude="*" 

However, this is not working, its only matching the top level Demultiplexing directory and nothing else. I have tried a lot of other combinations and they all either include everything, or exclude everything.

user5359531
  • 131
  • 1
  • 7

2 Answers2

2

Figured it out:

rsync -vrthP -e ssh "${production_dir}/" "$(whoami)"@"${remote_server}":"${remote_dir}/" \
    --include="Demultiplexing" \
    --include="Demultiplexing/*" \
    --include="Demultiplexing/*/output/***" \
    --exclude="*:*" \
    --exclude="*" 
user5359531
  • 131
  • 1
  • 7
0

Another try:

[root@localhost ~]# rsync -avni --include=output --exclude=OtherProjects --exclude=analysis --exclude='*:*' src/ dst/
sending incremental file list
.d..t...... ./
cd+++++++++ Demultiplexing/
cd+++++++++ Demultiplexing/Run1/
cd+++++++++ Demultiplexing/Run1/output/
>f+++++++++ Demultiplexing/Run1/output/test
cd+++++++++ Demultiplexing/Run2/
cd+++++++++ Demultiplexing/Run2/output/

sent 167 bytes  received 38 bytes  410.00 bytes/sec
total size is 0  speedup is 0.00 (DRY RUN)
shodanshok
  • 47,711
  • 7
  • 111
  • 180