Linux / Unix Rsync Copy Hidden Dot Files and Directories Only

last updated in Categories , , ,

How do I use the rsync tool to copy only the hidden files and directory (such as ~/.ssh/, ~/.foo, and so on) from /home/jobs directory to the /mnt/usb directory under Unix like operating system?

The rsync program is used for synchronizing files over a network or local disks. To view or display only hidden files with ls command:

ls -ld ~/.??*
ls -ld ~/.[^.]*
Sample outputs:
ls command: List only hidden files in Unix / Linux terminal
Fig:01 ls command to view only hidden files


rsync not synchronizing all hidden .dot files?

In this example, you used the pattern .[^.]* or .??* to select and display only hidden files using ls command. You can use the same pattern with any Unix command including rsync command. The syntax is as follows to copy hidden files with rsync:

rsync -av /path/to/dir/.??* /path/to/dest
rsync -avzP /path/to/dir/.??* /mnt/usb
rsync -avzP $HOME/.??*
rsync -avzP ~/.[^.]*

In this example, copy all hidden files from my home directory to /mnt/test:

rsync -avzP ~/.[^.]* /mnt/test

Sample outputs:

Rsync example to copy only hidden files
Fig.02 Rsync example to copy only hidden files

Rsync Copy Hidden Dot File Command Options

The options are as follows:

  1. -a – Archive mode copy. In this mode all given files are copied in recursive mode. Copy symlinks as symlinks, file permissions, date and time stapms, and much more.
  2. -v – Verbose copy. In other words, show what the rsync is doing.
  3. -z – Compress file data during the transfer.
  4. -P – Display progress bar


You learned how to to use the rsync command to copy hidden dot files including directories. See rsync man page here for more info or type the following man 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.


6 comment

    1. Noop. Any details on ls version and Unix may help if you are not getting the same result.

      ls -l ./.??*
      -rw-r--r-- 1 John John    0 Nov 11 11:54 ./.a,
      -rw-r--r-- 1 John John    0 Nov 11 11:54 ./.b,
      -rw-r--r-- 1 John John    0 Nov 11 11:54 ./.ssh
      total 0
      1. root@node0 / # cd /tmp
        root@node0 /tmp # ls -ld .??*
        ls: cannot access .??*: No such file or directory
        2 root@node0 /tmp # touch .a .b
        root@node0 /tmp # ls -ld .??*
        ls: cannot access .??*: No such file or directory
        2 root@node0 /tmp # ls -ld .[^.]*
        -rw-r–r–. 1 root root 0 Nov 11 23:07 .a
        -rw-r–r–. 1 root root 0 Nov 11 23:07 .b
        root@node0 /tmp # ls –version
        ls (GNU coreutils) 8.4
        Copyright (C) 2010 Free Software Foundation, Inc.
        License GPLv3+: GNU GPL version 3 or later .
        This is free software: you are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.

        Written by Richard M. Stallman and David MacKenzie.

  1. Thanks!! Makes sense when you figure ~/.??* means anything that starts with a dot, has 2 more random chars, then everything after it (as to ignore . and .. ). Easy peasy, and will work for a million years! Thanks again!

Leave a Comment