Обновяване на предпочитанията за бисквитки

Ръководство за копиране на данни с помощта на Rsync в Linux

Rsync е мощен инструмент за синхронизиране и копиране на файлове в Linux. Той ви позволява бързо да прехвърляте данни между локални директории или отдалечени сървъри, като запазвате структурата, разрешенията и времевите маркери. В тази статия ще ви разкажем как да използвате rsync за ефективно копиране: от основните команди до разширените настройки. Ще научите как да избягвате грешки, да ускорявате процеса и да защитавате данните си.

Предимства rsync:
  • Ефективност: копира само разликите;
  • Гъвкавост: поддържа локални и отдалечени операции чрез SSH;
  • Надеждност: запазване на права, собственици и референции.

Инсталиране на rsync

В повечето съвременни дистрибуции на Linux вече е инсталирана помощната програма rsync. Проверете дали тя е инсталирана:
rsync --versionАко командата извежда версия (напр. 3.2.7), преминете към следващия раздел. Ако не, инсталирайте я.
  • Ubuntu/Debian:
    apt install rsync
  • CentOS/RHEL:
    yum install rsync
  • Arch Linux:
    pacman -S rsync
Проверете инсталацията:
rsync --version

Базово копиране на локални данни

За да копирате локална директория, използвайте:
rsync -av /source_directory/ /target_directory/
  • -a (archive) — запазване на правата, собствениците, връзките и структурата;
  • -v (verbose) — показва процеса на копиране.
Наклонената черта в края на /source_directory/ е важна: без нея се копира самата директория, а с нея се копира нейното съдържание.

Пример: копиране на /home/user/docs в /backup:
rsync -av /home/user/docs/ /backup/
Уверете се, че файловете са копирани:
ls -l /backupЗа да актуализирате копието, повторете командата - rsync ще прехвърли само промените.

Копиране на отдалечен сървър

Копиране от локален към отдалечен сървър

За прехвърляне на данни към сървъра:
rsync -avz /source_directory/ user@server_address:/target_directory/
Пример: копиране на /home/user/docs на сървъра:
rsync -avz /home/user/docs/ [email protected]:/home/user/backup/

Копиране от отдалечен сървър към локален сървър

За обратното действие:
rsync -avz user@server_address:/source_directory/ /target_directory/
  • -z (compress) - компресира файловите данни по време на предаване, за да спести трафик при копиране.

Пример: изтегляне на /var/www от сървъра:
rsync -avz [email protected]:/var/www/ /home/user/www_backup/

Работа с нестандартен порт

Ако сървърът използва нестандартен SSH порт (например 2222), посочете го с опцията -e:
rsync -av -e "ssh -p 2222" /source_directory/ user@server_address:/target_directory/
Пример:
rsync -av -e "ssh -p 2222" /home/user/docs/ [email protected]:/home/user/backup/
Забележка: Уверете се, че портът е отворен в настройките на защитната стена, например:
ufw allow 2222

Разширени функции на rsync

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

За да пропуснете определени файлове или директории, използвайте --exclude:
rsync -av --exclude '*.log' /source_directory/ /target_directory/
Пример: изключване на логове и временни файлове:
rsync -av --exclude '*.log' --exclude 'temp/' /home/user/docs/ /backup/

Компресиране на данни

За да спестите трафик по време на отдалечено копиране, добавете -z (compress):
rsync -avz /source_directory/ user@server_address:/target_directory/

Изтриване на ненужни файлове

За да синхронизирате директориите с изтриване на файлове, които не са в източника, използвайте --delete:
rsync -av --delete /source_directory/ /target_directory/Забележка: Използвайте --delete с повишено внимание - изтритите файлове не могат да бъдат възстановени без резервно копие.

Типични грешки и тяхното отстраняване

Грешка: rsync: command not found
Причина: Помощната програма не е инсталирана. Инсталирайте я, например за Debian:
apt install rsync
Грешка: Permission denied
Причина: недостатъчни разрешения. Стартирайте със sudo или проверете разрешенията:
chmod 755 /directory
Грешка: Connection refused
Причина: SSH сървърът не е наличен. Проверете връзката:
ssh user@server_address

Автоматизация на копирането с rsync

Настройте автоматично копиране чрез cron. Отворете редактора:
crontab -e
Добавете задача (например, копиране всеки ден в 2:00 ч.):
0 2 * * * rsync -av /home/user/docs/ /backup/

Полезни съвети

  • Тестване на копирането в тестов режим с --dry-run: rsync -av --dry-run /source/ /destination/
  • Използвайте --progress за показване на напредъка: rsync -av --progress /source/ /destination/

Заключение

Rsync е универсален инструмент за копиране и синхронизиране на данни. Разгледахме неговата инсталация, основни и разширени команди и автоматизация. Използвайте тези препоръки, за да създавате резервни копия или да прехвърляте данни към сървър. Препоръчително е да тествате командите и да анализирате резултата - това ще ви помогне да овладеете rsync на практика.
07 Apr 2025, 16:04:12