You are currently viewing rsync в Linux

rsync в Linux

Програмата rsync е изключително мощен инструмент за синхронизиране на файлове и папки между две локации. Използва се предимно в Linux и UNIX системи и е известен със своята ефективност и гъвкавост. Ето основните аспекти на rsync:

  1. Диференциално копиране: rsync изпраща само разликите между източниковия и целевия файл, което значително намалява обема на преносимите данни.
  2. Гъвкави опции: Потребителите могат да избират между различни опции за синхронизация, като копиране на цели директории, изключване на определени файлове, задаване на правила за обработка на символни връзки, и т.н.
  3. Сигурност: rsync може да се използва с ssh (Secure Shell) за криптиран пренос на данни, което го прави подходящ за пренос на чувствителна информация.
  4. Компресия и оптимизация: Програмата позволява компресиране на данните по време на трансфера, което води до по-бързо копиране, особено при бавни връзки.
  5. Запазване на атрибутите на файловете: rsync може да запази атрибутите на файловете (като разрешения, време на последна промяна, групи и притежатели), което е важно за запазване на консистентността на данните.
  6. Използване на скриптове и автоматизация: rsync често се използва в скриптове за автоматизиране на процеси на архивиране и резервно копие.

rsync е мощен инструмент, който се използва в множество сценарии за управление на файлове и данни, включително резервно копиране, зеркалиране на сайтове и ефективно обновяване на файлове в множество системи.

Примери с rsync

rsync работи като синхронизира файлове и директории между две местоположения, като копира само промените, които са настъпили от последното синхронизиране. Това го прави изключително ефективен за обновяване на големи набори от данни с минимален трафик. Ето няколко примера за това как работи rsync:

Просто Копиране на Файлове

За да копирате файлове от една директория в друга на същата система:

Bash
rsync -av /path/to/source/ /path/to/destination/
  • -a (архивен режим) запазва правата, връзките, времето на последна промяна и други атрибути.
  • -v (verbose) показва подробна информация за процеса на копиране.

Синхронизация между Сървъри

За да синхронизирате данни между два сървъра:

Bash
rsync -avz -e ssh user@remotehost:/path/to/remote/source/ /path/to/local/destination/
  • -z активира компресията на данните по време на трансфера.
  • -e ssh указва да се използва SSH за сигурна връзка.

Създаване на Резервно Копие

За да създадете резервно копие на вашите файлове външно устройство или друга директория:

Bash
rsync -av --delete /path/to/source/ /path/to/backup/
  • --delete опцията премахва файлове в целевата директория, които вече не съществуват в източника.

Изключване на Файлове

Можете да изключите определени файлове или директории от процеса на синхронизация:

Bash
rsync -av --exclude 'pattern_to_exclude' /path/to/source/ /path/to/destination/
  • --exclude указва шаблони на файлове или папки, които да бъдат пропуснати.

Инкрементно Резервно Копие

rsync може да се използва за създаване на инкрементни резервни копия, като копира само променените файлове:

Bash
rsync -av --link-dest=/path/to/previous/backup /path/to/source/ /path/to/current/backup/
  • --link-dest свързва с файлове от предишно копие за намаляване на използваното пространство.

Ограничаване на Ширината на Лентата

Можете да ограничите скоростта на пренос на данни:

Bash
rsync -avz --bwlimit=1000 /path/to/source/ /path/to/destination/
  • --bwlimit ограничава скоростта на пренос в килобайти в секунда.

Тези примери илюстрират гъвкавостта и мощта на rsync за различни сценарии на синхронизиране и резервно копиране на данни.

Скрипт с rsync

Bash
#!/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

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.