Програмата rsync
е изключително мощен инструмент за синхронизиране на файлове и папки между две локации. Използва се предимно в Linux и UNIX системи и е известен със своята ефективност и гъвкавост. Ето основните аспекти на rsync
:
- Диференциално копиране:
rsync
изпраща само разликите между източниковия и целевия файл, което значително намалява обема на преносимите данни. - Гъвкави опции: Потребителите могат да избират между различни опции за синхронизация, като копиране на цели директории, изключване на определени файлове, задаване на правила за обработка на символни връзки, и т.н.
- Сигурност:
rsync
може да се използва сssh
(Secure Shell) за криптиран пренос на данни, което го прави подходящ за пренос на чувствителна информация. - Компресия и оптимизация: Програмата позволява компресиране на данните по време на трансфера, което води до по-бързо копиране, особено при бавни връзки.
- Запазване на атрибутите на файловете:
rsync
може да запази атрибутите на файловете (като разрешения, време на последна промяна, групи и притежатели), което е важно за запазване на консистентността на данните. - Използване на скриптове и автоматизация:
rsync
често се използва в скриптове за автоматизиране на процеси на архивиране и резервно копие.
rsync
е мощен инструмент, който се използва в множество сценарии за управление на файлове и данни, включително резервно копиране, зеркалиране на сайтове и ефективно обновяване на файлове в множество системи.
Примери с rsync
rsync
работи като синхронизира файлове и директории между две местоположения, като копира само промените, които са настъпили от последното синхронизиране. Това го прави изключително ефективен за обновяване на големи набори от данни с минимален трафик. Ето няколко примера за това как работи rsync
:
Просто Копиране на Файлове
За да копирате файлове от една директория в друга на същата система:
rsync -av /path/to/source/ /path/to/destination/
-a
(архивен режим) запазва правата, връзките, времето на последна промяна и други атрибути.-v
(verbose) показва подробна информация за процеса на копиране.
Синхронизация между Сървъри
За да синхронизирате данни между два сървъра:
rsync -avz -e ssh user@remotehost:/path/to/remote/source/ /path/to/local/destination/
-z
активира компресията на данните по време на трансфера.-e ssh
указва да се използва SSH за сигурна връзка.
Създаване на Резервно Копие
За да създадете резервно копие на вашите файлове външно устройство или друга директория:
rsync -av --delete /path/to/source/ /path/to/backup/
--delete
опцията премахва файлове в целевата директория, които вече не съществуват в източника.
Изключване на Файлове
Можете да изключите определени файлове или директории от процеса на синхронизация:
rsync -av --exclude 'pattern_to_exclude' /path/to/source/ /path/to/destination/
--exclude
указва шаблони на файлове или папки, които да бъдат пропуснати.
Инкрементно Резервно Копие
rsync
може да се използва за създаване на инкрементни резервни копия, като копира само променените файлове:
rsync -av --link-dest=/path/to/previous/backup /path/to/source/ /path/to/current/backup/
--link-dest
свързва с файлове от предишно копие за намаляване на използваното пространство.
Ограничаване на Ширината на Лентата
Можете да ограничите скоростта на пренос на данни:
rsync -avz --bwlimit=1000 /path/to/source/ /path/to/destination/
--bwlimit
ограничава скоростта на пренос в килобайти в секунда.
Тези примери илюстрират гъвкавостта и мощта на rsync
за различни сценарии на синхронизиране и резервно копиране на данни.
Скрипт с rsync
#!/bin/bash
# ---------------------------
# rsync script backup my server
# August 2019
# Samuil Arsov
# support@itservice-bg.net
# --------------------------
PASS='@11#22$33'
DIR='/mnt/hdd1/rsync'
IP='192.168.101.2'
clear
if [ $(whoami) != 'root' ]; then
echo "Please run with root user."
exit
fi
nmap -sT -Pn -p 22 $IP | egrep -q 'open'
if [[ $? -ne 0 ]]; then
echo "IP $IP Not connection"
exit 1
fi
if [ ! -d "$DIR" ]
then
echo "Directory $DIR DOES NOT exists."
exit 1
fi
sshpass -p $PASS rsync -avzh --delete -e ssh root@$IP:/etc/ $DIR/etc
sshpass -p $PASS rsync -avzh --delete -e ssh root@$IP:/root/ $DIR/root
sshpass -p $PASS rsync -avzh --delete -e ssh root@$IP:/var/vmail/ $DIR/vmail
sshpass -p $PASS rsync -avzh --delete -e ssh root@$IP:/var/www/ $DIR/www
date '+%Y-%m-%d %H:%M:%S' > $DIR/backup_time.txt