Linux: rsync Copy Directories Structures Tree Only

last updated in Categories ,

I am looking for to only sync directories structures only. How do I copy directory structure tree without copying any files under Linux or UNIX operating system to remove server or local directory?

You need to use the rsync command. The rsync remote-update protocol allows rsync to transfer just


the differences between two sets of files across the network connection, using an efficient checksum-search algorithm. Make sure it is installed on all servers for remote copy. The syntax is as follows to copy directories tree only:

rsync -av -f"+ */" -f"- *" /path/to/src /path/to/dest/
rsync -av -f"+ */" -f"- *" /path/to/apache/logs/

If you are using an older rsync version, try:

rsync -av --include='*/' --exclude='*' /path/to/src /path/to/dest/
rsync -av --include='*/' --exclude='*' /path/to/apache/logs/

rsync Command For Directory Structures / Tree Only

Consider the following layout in /var/logs/apache/ for each domain:

You can sync just directories by excluding everything else. Open a command-line terminal (select Applications > Accessories > Terminal), and then type the following commands or login using ssh to the remote server. You want to copy all dirs i.e. exclude everything that is not a directory, enter:
# cd /var/log/apache/
# rsync -av -f"+ */" -f"- *" .

Sample outputs:

building file list ... done

sent 388 bytes  received 98 bytes  972.00 bytes/sec
total size is 0  speedup is 0.00

You can also make local copies as follows:
# cd /var/log/apache/
# rsync -av -f"+ */" -f"- *" . /jailfs/apache/httpd_root/var/log/apache/

See also:

If you need assistance with Linux / UNIX rsync command-line options, turn to the man page first. It will give you detailed information, parameters and switches for rsync command:
$ man rsync


Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

8 comment

  1. You can use a find command for this if you want the whole directory tree, not just the top level. Of course when pushing a structure remotely its better to manipulate locally then push:

    find -type d -exec mkdir -p /{} \;

    This will copy the directory structure of to under the dir.

    Isn’t the find command wonderful?!

  2. Thank you so much for this, it was exactly what we needed and worked so much faster than what we were trying to do before your solution !

    Still, have a question? Get help on our forum!