Ръководство за копиране на данни с помощта на 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) — показва процеса на копиране.
Пример: копиране на /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