рд╣рдо * NIX OS рдХреЗ рдЕрдВрддрд░реНрдЧрдд Backups рдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ

рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рдиред
рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВ рдЬреЛ рдмреИрдХрдЕрдк рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмреИрдХрдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рдПрдХ рд╕реНрдерд┐рддрд┐ рдереА рдЬрдм рд╣рд╛рде рдкрд░ рдПрдХ рдмрдбрд╝реА рд░рд╛рд╢рд┐ рдХреЗ рд╕рд╛рде рд╣рдореЗрд╢рд╛ рддрд╛рдЬрд╛ рдмреИрдХрдЕрдк рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛
рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдмреЗрд╢рдХ, рдмрд╣реБрдд рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореБрдлреНрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╣реИ рдЬреЛ рдЫрдд рдХреЗ рдКрдкрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╛ рддреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛ рд╕рдВрдкрдиреНрди рд╣реИ рдпрд╛ рдЖрдкрдХреЛ рдЕрдВрдд рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, fsbackup рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдмреИрдХрдЕрдк рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реЛрд╕реНрдЯ рд╣реИрдВред
OS рд╕рднреА 8.2 рдкрд░ рдирд┐: рд╢реБрд▓реНрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдпрд╣ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд╣рдо рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ (рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реЛрд╕реНрдЯ рдкрд░, рд╕рд░реНрд╡рд░ рдХреЛ рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВ):

[рд░реВрдЯ @ рд╕рд░реНрд╡рд░ / usr / рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ / sysutils / fsbackup] # рд╕рд╛рдл рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП fsbackup рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде fsbackup.conf рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ
рд╕рд╛рдордЧреНрд░реА:
$cfg_backup_name = "host1"; $cfg_cache_dir= "/usr/local/fsbackup/cache"; $prog_md5sum = "md5sum -b"; $prog_tar = "/usr/bin/tar"; $prog_ssh = "/usr/bin/ssh"; $prog_rm = "/bin/rm"; $prog_gzip = "/usr/bin/gzip"; $prog_pgp = ""; $cfg_checksum = "timesize"; $cfg_backup_style = "sync"; #  backup-a ,      $cfg_save_old_backup = 1; $cfg_type = "local"; $cfg_local_path = "/home/back/backup_data"; #     . $cfg_time_limit = 0; $cfg_size_limit = 0; $cfg_maximum_archive_size = 0; $cfg_root_path = "/"; $cfg_verbose = 2; $cfg_stopdir_prune=0; 1; __DATA__ #   /usr/local/etc /etc !/usr/local/etc/share # f!\.core$ f!^core$ f!\.o$ f!\.log$ 

рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ, рдХреНрдпрд╛ рд╣реИ, рдЖрдк рдорд╛рдирдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ create_backup.sh рдлрд╝рд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 #!/bin/sh HASH=`find /usr/home/back/backup_data -name *hash -mtime -1` 

рдФрд░ рдлрд╝рд╛рдЗрд▓ рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рдореЗрдВ:
 #           if [ -n "${HASH}" ]; then ( tar -cf /usr/home/back/backup_tar/arcamart.tar /usr/home/back/backup_data ) else printf "===>>> not new backup\t" > backup_err.log | err_msg fi exit 0 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди config_files = "fsbackup.conf" рдХреЛ рд╕рд╣реА рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ, рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
рдФрд░ рд╣рдо рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреНрд░реВрди (рдореВрд▓ рд░реВрдк рд╕реЗ рдХреНрд░реВрди рдореЗрдВ) рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЗрдбрд╝ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдЧреА рдФрд░, рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдпреЗрдЧреАред
рдЕрдм рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ,
sudo pw useradd рдмреИрдХ -m -G рдмреИрдХ

рдмреИрдХ рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдЙрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
mkdir backup_tar # рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдЯреНрд░реА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП
mkdir .ssh # рдкреНрд░рд╛рдзрд┐рдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП # (рдЙрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ)

рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ ssh рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рдЕрдм рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХ рдирдпрд╛ рдмреИрдХрдЕрдк рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдЦреБрдж рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╣реЛрд╕реНрдЯ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА рд▓реЙрдЧ рднреА рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдкрд╕ рднреА рдмрдирд╛рддреЗ рд╣реИрдВред (рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг, рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл рд╣реЛрдо рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдореЗрдЬрдмрд╛рдиреЛрдВ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реЛрд╕реНрдЯ / рдпреВрдПрд╕рдЖрд░ / рд╣реЛрдо / рдмреИрдХ рдкрд░, рдФрд░ рд╕рд░реНрд╡рд░ / рдпреВрдПрд╕рдЖрд░ / рд▓реЛрдХрд▓ / рд╣реЛрдо / рдмреИрдХ рдкрд░, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ)
[рд░реВрдЯ @ рд╕рд░реНрд╡рд░ / usr / рд╕реНрдерд╛рдиреАрдп / рдШрд░ / рд╡рд╛рдкрд╕] mkdir .ssh

рдЕрдм рд╣рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдмрдирд╛рддреЗ рд╣реИрдВ
[рд░реВрдЯ @ рд╕рд░реНрд╡рд░ /usr/local/home/back/.ssh] ssh-keygen

рдЕрдм, рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд┐рдП рдмрд┐рдирд╛ рдореЗрдЬрдмрд╛рдиреЛрдВ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХреЗ, рдЖрдкрдХреЛ рдмрд╕ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рд╕реЗ рдлрд╛рдЗрд▓ рдХреЛ $ рд╣реЛрдо / .ssh / рдЕрдзрд┐рдХреГрдд_рдХреА (рдЬреЛ рдЖрдкрдХреЗ рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╣реИ) рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдзрд┐рдХреГрдд_рдХреА рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЕрдзрд┐рдХрд╛рд░ рдФрд░ рд╕реНрд╡рд╛рдореА рд╕реЗрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ
рд╕реБрдбреЛ рдЪрд╛рдореЛрдб 600 рдЕрдзрд┐рдХреГрдд_рдХреА
sudo chown рдмреИрдХ: рдмреИрдХ рдЕрдзрд┐рдХреГрдд_рдХреАрдЬрд╝

рддреЛ, рд╣рдо рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ if_routers рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рд╣реЛрдЧреА

рдЙрджрд╛рд╣рд░рдг: ee if_routers:
рдУрдХрдЯреЗрдЯ = "192.168"
рдкрд░реАрдХреНрд╖рдг = "$ {рдУрдХрдЯреЗрдЯ} .0.1"
test2 = "$ {рдУрдХрдЯреЗрдЯ} .0.2"
test3 = "$ {рдУрдХрдЯреЗрдЯ} .0.3"
test4 = "$ {рдУрдХрдЯреЗрдЯ} .0.4"
test5 = "$ {рдУрдХрдЯреЗрдЯ} .0.5"

рдХрд┐рд╕реА рднреА рдирд╛рдо рд╕реЗ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ, sbackup.sh рд╣реЛ
рд╕рд╛рдордЧреНрд░реА:
 #!/bin/sh s_copy="/usr/local/bin/rsync -azv -e \"ssh -l back -o StrictHostKeyChecking=no\"" DST="/usr/local/home/back/backup_data" #     dir_1="/usr/home/back" #    dir_2="/usr/local/home/back" #   dir_3="/usr/home/back/backup_tar" #     HOME_DIR="/usr/local/home" # #      if [ -f ${dir_2}/if_routers ]; then . ${dir_2}/if_routers else echo "Procedure ${dir_1}/if_routers is not install" > ${dir_2}/backup.log 2>&1 exit 1 fi TIMESTAMP=`date +"%Y-%m-%d %R"` #      ping get_alive () { check_host="/usr/local/sbin/fping -a" eval ${check_host} $1 > /dev/null 2>&1 } err_msg () { printf "DATE: $TIMESTAMP.\n" >> ${dir_2}/backup_err.log } #    , , ,   ,    ,    . get_alive $TEST if [ $? -eq 0 ]; then BACKTEST=`ssh -i /usr/local/home/back/.ssh/id_dsa back@192.168.0.1 "find /usr/home/back/backup_tar -name *.tar -mtime -1 | sed -E 's/.*\///g'"` if [ -n "${BACKTEST}" ]; then (printf "===>>> Start remote backup: ${TIMESTAMP}\n" printf " \n" printf "===================================\n" printf "$ts ===>>>${dir_1}\n" printf "\n" eval ${s_copy} back@${TEST}:${dir_3}/${BACKTEST} ${DST} ) > ${dir_2}/backup.log 2>&1 else printf "===>>> Host: $test is not new backup\t" > ${dir_2}/backup_err.log fi else printf "===>>> Host: $test is down\t" > ${dir_2}/backup_err.log | err_msg exit 1 fi #      ,   get_alive $ exit 0 

рдлрд╝реЛрд▓реНрдбрд░ / usr / рд╕реНрдерд╛рдиреАрдп / рд╣реЛрдо / рдмреИрдХ / backup_data рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдмрдирд╛рдПрдВ
рдЕрдм рдЖрдк рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред Chmod + x рдбрд╛рд▓рдирд╛ рди рднреВрд▓реЗрдВ
рдореИрдВ рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рд╕реБрджреЛ рд╕реБ - рдкреАрдЫреЗ ./sbackup.sh
рдФрд░ рдореБрдХреБрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
рд╕реВрджреЛ crontab -u рдмреИрдХ-рдИ
рд╣реЛ рдЧрдпрд╛ред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ рдПрдХ рддрд╛рдЬрд╛ рдмреИрдХрдЕрдк, рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирдХрд▓ рдХреЗ рдмрд┐рдирд╛, рдЕрд░реНрдерд╛рддреН, рдХреЗрд╡рд▓ рдлрд╛рдЗрд▓реЗрдВ рдмрджрд▓рддреЗ рд╕рдордпред
рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЙрд╕ рд╣реЛрд╕реНрдЯ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЖрдк рд╕рднреА рдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рднреВрд▓ рдкрд╛рдпрд╛ рд╣реВрдБред

Source: https://habr.com/ru/post/In133051/


All Articles