20 Ekim 2019 Pazar

rsync komutu - Replicate Directory Structure

Giriş
Replicate Directory Structure anlamına gelir

1. Kurulum
Kurmak için şöyle yaparız
sudo apt install rsync 
2. Genel Kullanım
Şöyledir. Yani seçeneklerden sonra kaynak dizin daha sonra da hedef dizin belirtilir
rsync ...options... /full/path/src ./dst
Çok kullanılan seçenekler
-a 
--progress
--inplace

Örnek
Şöyle yaparız. -n ile prova yapılır yani ne işlem yapılacağı görülür. -v ile daha detaylı bilgi gösterilir. -f ile dosyalar seçilir.
rsync -nvr -f '+ *.odt' -f '+ **/' -f '- *' --prune-empty-dirs ~/Documents/ ~/copies/
3. Seçenekler

-a seçeneği
Açıklaması şöyle.
The -a option is a combination flag. It stands for "archive" and syncs recursively and preserves symbolic links, special and device files, modification times, group, owner, and permissions. It is more commonly used than -r and is usually what you want to use.
Örnek
Şöyle yaparız.
BACKUPPOINT=/mnt/user
MOUNTPOINT=/mnt/disks/REDBackup

rsync -a -v --delete $BACKUPPOINT/ $MOUNTPOINT/Daily/ 2>&1
Örnek
Şöyle yaparız. Bulunduğumuz dizini hedef dizine kopyalar
rsync -av ./ destination:destPath/
Örnek
Sadece dizin yapısını timestamp bilgisi de dahil olacak şekilde kopyalamak için şöyle yaparız.
rsync -a --include='*/' --exclude='*' /some/path/dir/ dir
Açıklaması şöyle.
This would recreate the directory structure of /some/path/dir as dir in the current directory, without copying any files.

Any directory encountered in the source path would be created at the target due to the inclusion pattern, but anything else would be excluded. As a side effect of using -a (--archive), you'll get the same timestamps on all subdirectories in the target as in the source. This also works for creating local directory structures from remote directories (and vice versa).
--append
restart vs gibi işlemlerde kaldığı yerden deva etmesi için kullanılır. --append seçeneğini kullanırken kaynak dosyanın değişmediğinden emin olmak gerekir.
Örnek
Şöyle yaparız
rsync -a -vi --append --inplace --partial --progress 
  /path/to/source/  
  /path/to/target
Açıklaması şöyle.
You could remove --progress if you didn't want to see a progress indicator, and -vi if you are less bothered about a more informational result (you'll still get told if it succeeds or fails). You may see -P used in other situations: this is the same as --partial --progress and can be used for that here too.

--append to continue after a restart without checking previously transferred data
--partial to keep partially transferred files
--inplace to force the update to be in-place
If you are in any doubt at all that the source might have changed since the first attempt at rsync, use the (much) slower --append-verify instead of --append. Or better still, remove the --append flag entirely and let rsync delete the target and start copying it again.

-c seçeneği - MD5 comparison yapar
Açıklaması şöyle.
-c causes rsync to compare files by MD5 checksum (without it, it normally uses only the timestamp and size for quicker comparisons).
--delete seçeneği
Açıklaması şöyle.
Add the --delete flag to to completely overwrite the target directory tree each time. If you want to see what's going on, add -v.
Şöyle yaparız.
rsync -avz -H --delete /etc /bin (...and so on) destserver:/mnt/yourrootfs/
--exclude seçeneği
Bazı dosya veya dizinleri hariç bırakır
Örnek
Şöyle yaparız
rsync -av --exclude '*.txt' dir1/ dir2/
Örnek
Şöyle yaparız. logs dizini hariç bırakılır
rsync --archive --exclude /logs /home/user/glassfish/domains/domain1 /home/user/backup
-H seçeneği
Örnek
Açıklaması şöyle
if you don't use -H, hardlinks are lost.
if you don't use -S, sparse files may have been expanded
Şöyle yaparız, hard link'ler kaybolur, sparse dosyalar genişletilir.
sudo rsync --progress -au --delete --rsync-path="sudo rsync" /u/ henry@enceladus:/u
--ignore-existing seçeneği
Açıklaması şöyle.
A temporary file is O_EXCL created by default (only disabled if you use --inplace) and then renamed over the target file. Use --ignore-existing to not overwrite B if it exists.
Örnek
Şöyle yaparız. B'de bulunan ancak A'da eksik olanları kopyalar
rsync -a --ignore-existing B A
--inplace seçeneği
Açıklaması şöyle.
With standard options, rsync will copy the new file assigning it a semi-random name, then it will rename the new file with the original name. In this process, no writes are directed at the original file, preserving its hadlinks.

On the other side, using the non-default--inplace option will overwrite the original file and its hardlinks.

Anyway, I strongly suggest to give a look at --link-dest option, which is extremely useful for deduplicated backups.
-i seçeneği
Açıklaması şöyle. Normalde rsync farklı gördüğü dosyaları karşı tarafa kopyalar.
To avoid that, you can also use -n and -i. The former ensures that rsync doesn't do any change and only compares, and the latter causes it to display the differences that it sees.
Örnek
Şöyle yaparız.
$ rsync -rcni dir1/ dir2/
>f+++++++++ c
>fc.T...... d/b
Açıklaması şöyle.
Tells me, by way of all those +s, that file c does not exist in dir2, and file d/b does, but is different (indicated by the c in the first column). The T says that it's time would be updated (had we not used -n).

The format of -i's output is described in the manpage for rsync. You can man rsync and get to the part that explains that output by typing /--itemize-changes$ (and hitting Enter).
-P seçeneği
--partial veya --progress seçenekleri ile aynıdır. progress gösterir. Dosya göndermek için şöyle yaparız.
rsync -chavzP dump.sql user@ip-address:~
--partial seçeneği
Açıklaması şöyle
--partial                keep partially transferred files
--progress seçeneği
Şöyle yaparız.
rsync -av --progress file.txt user@host:
--prune-empty-dirs seçeneği
Şöyle yaparız. Eğer dizin altında istenilen dosya yoksa boş dizini oluşturmaz.
rsync -zarv  --prune-empty-dirs --include "*/"  --include="*.sh" --exclude="*"
  "$from" "$to"
-R/--relative seçeneği
Açıklaması şöyle. Full path'i muhafaza eder.
-R, --relative Use relative paths. This means that the full path names specified on the command line are sent to the server rather than just the last parts of the filenames. This is particularly useful when you want to send several different directories at the same time. For example, if you used this command: rsync -av /foo/bar/baz.c remote:/tmp/ ... this would create a file named baz.c in /tmp/ on the remote machine. If instead you used rsync -avR /foo/bar/baz.c remote:/tmp/ then a file named /tmp/foo/bar/baz.c would be created on the remote machine, preserving its full path. These extra path elements are called “implied directories” (i.e. the “foo” and the “foo/bar” directories in the above example).
-v/--version seçeneği
Şöyle yaparız
rsync ---version
-z seçeneği
Sanırım sıkıştırarak gönderiyor.
Örnek
Şöyle yaparız
rsync -az ~/Documents/projects/myproject/dist/ root@13.21.13.12:public_html/

Hiç yorum yok:

Yorum Gönder