Как да синхронизираме файлове в Linux: 30 практически примера
Синхронизирането на файлове между локални и отдалечени системи е важен аспект на системната администрация. В Linux има различни инструменти за постигане на тази задача, като rsync
, scp
и lftp
. В тази статия ще разгледаме 30 примера за синхронизиране на файлове и директории от локалната към отдалечената машина и обратно, като използваме тези инструменти.
1. Основно копиране на файлове с rsync
rsync
е мощен инструмент за синхронизиране на файлове и директории. Основната команда за копиране на файл от локална към отдалечена машина е:
rsync -avz файл.txt потребител@отдалечен_сървър:/път/до/отдалечена/директория/
Тази команда копира файл.txt
в отдалечената директория, запазвайки всички атрибути на файла.
2. Копиране на директория с rsync
За да копирате директория с всичките ѝ съдържания, използвайте:
rsync -avz /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
Тази команда синхронизира съдържанието на локалната директория с отдалечената директория.
3. Синхронизиране на файлове от отдалечена към локална машина с rsync
За да синхронизирате файлове от отдалечената към локалната машина, обърнете източника и дестинацията:
rsync -avz потребител@отдалечен_сървър:/път/до/отдалечена/директория/ /локална/директория/
4. Изключване на файлове по време на синхронизиране
Можете да изключите определени файлове или директории, като използвате опцията --exclude
:
rsync -avz --exclude 'файл.txt' /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
Тази команда пропуска синхронизирането на файл.txt
.
5. Ограничаване на скоростта на прехвърляне
Можете да ограничите скоростта на прехвърляне на данни с rsync
, като използвате опцията --bwlimit
:
rsync -avz --bwlimit=1000k /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
Тази команда ограничава скоростта до 1MB/s.
6. Изпращане на компресирани данни
Компресирането на данни преди прехвърляне може да ускори процеса. Това се постига чрез опцията -z
:
rsync -avz /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
7. Синхронизиране на файлове с scp
scp
е друг популярен инструмент за прехвърляне на файлове през SSH. За да копирате файл от локална към отдалечена машина, използвайте:
scp файл.txt потребител@отдалечен_сървър:/път/до/отдалечена/директория/
8. Копиране на директория с scp
За да копирате директория и нейното съдържание, използвайте опцията -r
:
scp -r /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
9. Копиране на файлове от отдалечена към локална машина с scp
Можете също да копирате файлове от отдалечен сървър към локалната машина:
scp потребител@отдалечен_сървър:/път/до/отдалечена/директория/файл.txt /локална/директория/
10. Използване на lftp
за синхронизиране на файлове
lftp
е друг инструмент, който поддържа синхронизация на файлове. За да го използвате, въведете:
lftp -e "mirror --reverse /локална/директория/ /път/до/отдалечена/директория/; quit" -u потребител,парола ftp://отдалечен_сървър
11. Копиране на файлове чрез FTP с lftp
lftp
позволява копиране на файлове през FTP:
lftp -e "get /път/до/отдалечен/файл.txt -o /локална/директория/файл.txt; quit" -u потребител,парола ftp://отдалечен_сървър
12. Синхронизиране на файлове през SFTP с lftp
За синхронизиране на файлове през SFTP с lftp
, използвайте:
lftp -e "mirror --reverse --use-pget-n=8 /локална/директория/ /път/до/отдалечена/директория/; quit" -u потребител,парола sftp://отдалечен_сървър
13. Използване на rsync
за синхронизиране на файлове по SSH
С rsync
, можете да синхронизирате файлове през SSH, като използвате:
rsync -avz -e ssh /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
14. Синхронизиране на файлове със запазване на символни линкове
Ако искате да запазите символни линкове, използвайте опцията -l
:
rsync -avzl /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
15. Синхронизиране на файлове с прескачане на съществуващи файлове
Ако искате да пропуснете синхронизирането на файлове, които вече съществуват, използвайте:
rsync -avzu /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
16. Показване на прогреса по време на синхронизиране
За да следите прогреса на синхронизирането, добавете опцията --progress
:
rsync -avz --progress /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
17. Копиране на файлове от отдалечена машина с scp
през определен порт
Ако отдалеченият сървър използва различен SSH порт, посочете го с -P
:
scp -P 2222 потребител@отдалечен_сървър:/път/до/отдалечена/директория/файл.txt /локална/директория/
18. Синхронизиране на файлове по мрежа с ограничена честотна лента
Ако работите в мрежа с ограничена честотна лента, можете да ограничите честотата на предаване на данни:
rsync -avz --bwlimit=500k /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
19. Използване на rsync
за синхронизиране на големи файлове
За синхронизиране на големи файлове използвайте rsync
, тъй като той е оптимизиран за подобни задачи:
rsync -avz --partial /локална/директория/голям_файл.iso потребител@отдалечен_сървър:/път/до/отдалечена/директория/
20. Архивиране на локални файлове на отдалечен сървър с scp
За архивиране на локални файлове на отдалечен сървър използвайте scp
:
scp -r /локална/директория/ потребител@отдалечен_сървър:/път/до/резервно/копие/
21. Синхронизиране на файлове между две отдалечени машини с rsync
Можете да използвате rsync
, за да синхронизирате файлове между две отдалечени машини:
rsync -avz -e ssh потребител@сървър1:/път/до/директория/ потребител@сървър2:/път/до/директория/
22. Копиране на файлове през SSH тунел с rsync
За да копирате файлове през SSH тунел, използвайте:
rsync -avz -e "ssh -p 2222" /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
23. Синхронизиране на файлове със запазване на оригиналната структура
Ако искате да запазите оригиналната структура на директорията, използвайте:
rsync -avz --relative /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
24. Копиране на файлове от отдалечена машина с scp
през прокси
За да копирате файлове през прокси сървър, използвайте следната команда:
scp -o "ProxyCommand=nc -X connect -x proxy:8080 %h %p" потребител@отдалечен_сървър:/път/до/директория/файл.txt /локална/директория/
25. Използване на rsync
за инкрементално архивиране
Инкременталното архивиране с rsync
може да спести време и ресурси:
rsync -avz --link-dest=/път/до/предишно/архивно/копие /локална/директория/ потребител@отдалечен_сървър:/път/до/архив/
26. Синхронизиране на файлове с различна собственост
Ако файловете имат различни права на достъп и собственост, използвайте rsync
с опцията -o
:
rsync -avzo /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
27. Копиране на файлове през SFTP с scp
Можете да използвате scp
за прехвърляне на файлове през SFTP:
scp -S sftp файл.txt потребител@отдалечен_сървър:/път/до/отдалечена/директория/
28. Използване на rsync
за синхронизиране на файлове на отдалечен сървър с различен порт
Ако отдалеченият сървър използва различен порт, посочете го с -e
:
rsync -avz -e "ssh -p 2222" /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
29. Автоматизиране на синхронизирането с cron
и rsync
Автоматизирайте синхронизирането с помощта на cron
. Добавете задача в crontab:
0 2 * * * rsync -avz /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/
Тази задача ще се изпълнява всеки ден в 2:00 часа.
30. Синхронизиране на директории в реално време с rsync
и inotify
Комбинирайте rsync
и inotify
за синхронизиране в реално време:
inotifywait -m /локална/директория/ -e create -e modify -e delete -e move | while read path action file; do rsync -avz /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/ done
Това ще наблюдава директорията и ще синхронизира промените веднага.
Заключение
Синхронизирането на файлове между локални и отдалечени системи е важен аспект на управлението на данни в Linux. С тези 30 примера за използване на rsync
, scp
и lftp
, можете ефективно да управлявате и синхронизирате вашите файлове. Тези команди обхващат основни и по-сложни сценарии, които могат да се използват в различни ситуации, осигурявайки гъвкавост и надеждност в процеса на синхронизиране на данни.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut