рдПрд╕рдПрд╕рдПрдЪ / рдПрд╕рдПрдлрдЯреАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рдХреЛрддреНрд░рд┐рдХ рдХреЛ рддреЛрдбрд╝рдлреЛрдбрд╝ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐:



рдореИрдВ SSH / SFTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдмрд╡рд░реНрд╕рди рдореЗрдВ рд░рд╛рдЙрдЯрд░рдУрдПрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмреИрдХрдЕрдк рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рдореЗрд░реЗ рдореВрд▓ рдкреЛрд╕реНрдЯ рдХреЛ рдорд┐рдХрд░реЛрдЯрд┐рдХ рдордВрдЪ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдПрд╕рдПрд╕рд╡реАрдПрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреЛрдбрд╝рдлреЛрдбрд╝ / рдПрд╕рд╡реАрдПрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдмреИрдХрдЕрдк рдорд┐рдХрд░реЛрдЯрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ, рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛: рдкрд╛рдпрдерди рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рдХреНрд░реЛрдЯреАрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдХреЗрдВрджреНрд░реАрдХреГрдд рд╕рдВрдЧреНрд░рд╣ , рд▓реЗрдХрд┐рди рдПрдлрдЯреАрдкреА рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

ROS рдмреИрдХрдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:


рдпрджрд┐ рдЖрдкрдХреЛ ROS рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдкреВрд░реНрдг рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реИрдВ:
1. рдЖрд░рдУрдПрд╕ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ (рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдордВрдЪ рдкрд░ рд╡рд╕реВрд▓реА рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд▓рд┐рдП)
2. рдмреИрдХрдЕрдк рдЖрд░рдУрдПрд╕ рд╡рд┐рдиреНрдпрд╛рд╕
3. рдирд┐рд░реНрдпрд╛рдд ROS config (рдЬрд╣рд╛рдВ рдЖрдк рд╣рдореЗрд╢рд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ)

рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕рд╛рд░:


рд╣рдорд╛рд░реЗ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХреГрддред рд╣рдо / рдЖрджрд┐ рддреЛрдбрд╝рдлреЛрдбрд╝ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдо рд╣рдореЗрд╢рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░рд┐рдЬрд░реНрд╡ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдорд┐рдХрд░реЛрдЯрд┐рдХ рд╡рд┐рдХреА рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд: рд╕рд┐рд╕реНрдЯрдо рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдПрд╕рдПрд╕рдПрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рддрд░реНрдХ:


1. рд▓рд┐рдирдХреНрд╕ рдкрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ
2. рдкрд┐рдЫрд▓реЗ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ
3. рдпрджрд┐ рдХреЛрдИ рдЕрдВрддрд░ рд╣реИ, рддреЛ рдмреИрдХрдЕрдк рдХрд░реЗрдВ (рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВрдЧреЗ)
4. рдПрд╕рд╡реАрдПрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ

рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ:


1. SSH рд╕рдХреНрд╖рдо рдХреЗ рд╕рд╛рде 5.15 рдЖрд░рдУрдПрд╕
2. рддреЛрдбрд╝рдлреЛрдбрд╝
3. рд╕реНрдерд╛рдкрд┐рдд ssh, sftp, sshpass рдФрд░ svn рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд▓рд┐рдирдХреНрд╕

рд╕реНрдерд╛рдкрдирд╛:


1. рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░, рд╣рдо ROS рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдПрдХ рдЦрд╛рддреЗ рдХреЗ рддрд╣рдд рдЬреНрдЮрд╛рдд_рд╣реЛрд╕реНрдЯреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреНрд░реЛрди рдмреИрдХрдЕрдк рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛:

ssh-keyscan -v -p 22 -t dsa 192.168.0.1 >> ~/.ssh/known_hosts 


2. рдЖрд░рдУрдПрд╕ рдореЗрдВ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдзрд┐рдХрд╛рд░ рд╣реЛрдВрдЧреЗ, рдФрд░ рдЗрд╕реЗ рдЙрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдкрддреЗ рдкрд░ рдмрд╛рдБрдзреЗрдВрдЧреЗ рдЬрд╣рд╛рдБ рд╕реЗ рдмреИрдХрдЕрдк рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

export = ssh, ftp,read, sniff
backup = ssh, test, policy
get export via sftp = ssh, ftp
get backup via sftp = ssh, ftp, sensitive


 /user group add name=backup policy=ssh,ftp,read,sniff,test,policy,sensitive /user add name=backuper password="password" group=backup address=192.168.0.2 disabled=no 


3. SVN рдореЗрдВ рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдмрдирд╛рддреЗ рд╣реИрдВ, рдореИрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рддрд╛ рд╣реВрдВ:
 svn mkdir --parents https://svn.domain.com/svn/admin/trunk/usingw01 --no-auth-cache --username user --password '*****' --message "Created empty directory for usingw01 - `date +"%Y-%m-%d %H:%M:%S"`" 


4. рд▓рд┐рдирдХреНрд╕ рдкрд░, рдПрд╕рд╡реАрдПрди рдХреА рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ, рдореИрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рддрд╛ рд╣реВрдВ:
 mkdir -p /root/backup/trunk/usingw01/ 


5. рд▓рд┐рдирдХреНрд╕ рдкрд░, рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ SVN рдХреА рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреА ROS рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ:
 cd /root/backup/trunk/usingw01 svn checkout https://svn.domain.com/svn/admin/trunk/usingw01 . --trust-server-cert --non-interactive --no-auth-cache --username usingw01 --password 'svnpassword' 


6. рд▓рд┐рдирдХреНрд╕ рдкрд░, рдмреИрдХрдЕрдк рд╕реНрд╡рдЪрд╛рд▓рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ:
 mkdir /root/backup_scripts 


7. рд▓рд┐рдирдХреНрд╕ рдкрд░, рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ:
 vi /root/backup_scripts/backup_usingw01_to_svn.sh 


 #!/bin/sh # routername="usingw01" sshhost="192.168.0.1" sshport="22" sshuser="backuper" sshpassword="password" svnlocalpath="/root/backup/trunk/$routername" svnusername="usingw01" svnpassword="svnpassword" current_export_name="$routername-config-export-current.rsc" precedent_export_name="$routername-config-export-precedent.rsc" current_backup_name="$routername-config-backup-current.backup" # # sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport export >$current_export_name diff -I "by Router" $current_export_name $svnlocalpath/$precedent_export_name # if [ "$?" -ne "0" ]; then sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport export file=$current_export_name sshpass -p $sshpassword ssh $sshuser@$sshhost -p $sshport system backup save name=$current_backup_name sshpass -p $sshpassword sftp -oPort=$sshport $sshuser@$sshhost:$current_backup_name # mv -f $current_export_name $svnlocalpath/ mv -f $current_backup_name $svnlocalpath/ rm -f $svnlocalpath/$precedent_export_name svn add --force $svnlocalpath/$current_export_name svn add --force $svnlocalpath/$current_backup_name svn commit $svnlocalpath --trust-server-cert --non-interactive --no-auth-cache --username $svnusername --password $svnpassword --message "Automated commit of $routername at `date +"%Y-%m-%d %H:%M:%S"`" # mv -f $svnlocalpath/$current_export_name $svnlocalpath/$precedent_export_name exit 1 # # fi mv -f $current_export_name $svnlocalpath/$precedent_export_name exit 0 # 


8. рд▓рд┐рдирдХреНрд╕ рдкрд░, рдПрдХ рдХреНрд░реЙрди рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВ рдЬреЛ рдмреИрдХрдЕрдк рдХрд░реЗрдЧрд╛:
 crontab -e 

 00 04 * * * sh /root/backup_scripts/backup_usingw01_to_svn.sh 


рдкрд░рд┐рдгрд╛рдо:


рдХрд▓ рд╕реБрдмрд╣ рдЖрдкрдХреЛ рдПрд╕рд╡реАрдПрди рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХреА рдПрдХ рдкреНрд░рддрд┐ рдФрд░ рдЕрдкрдиреЗ рдЖрд░рдУрдПрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд╛ рдкреВрд░рд╛ рдмреИрдХрдЕрдк рдорд┐рд▓реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рддреНрд╡рд░рд┐рдд рд░рд┐рдХрд╡рд░реА рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╣реЛрдВрдЧреЗред
рдЖрдк рд╕реВрдЪрдирд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SVN-рд╕реВрдЪрд┐рдд рдХреЛ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрд╕рд╡реАрдПрди рдореЗрдВ, рдЖрдк рд╣рдореЗрд╢рд╛ рдмреИрдХрдЕрдк рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдкрд┐рдЫрд▓реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЕрдЧрд░ рдХрдИ рд▓реЛрдЧ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ - рд╣рд░ рдХреЛрдИ рдореЗрд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡ рджреЗрдЦреЗрдЧрд╛ рдФрд░ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред
рдЫрд╡рд┐

рд╕реБрд░рдХреНрд╖рд╛:


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд┐рд░реНрдпрд╛рдд рдореЗрдВ рдкреАрдкреАрдкреА рдЬреИрд╕реЗ рдкрд╛рд╕рд╡рд░реНрдб рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
 hide-sensitive 
рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп, рд▓реЗрдХрд┐рди рдпрд╣ рдмреИрдХрдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реАрдорд╛рдПрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PPP рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдЖрдкрдХреЛ рдмреИрдХрдЕрдк рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдареАрдХ рд╣реИ, рдмрд╕ рдЕрдкрдиреЗ рдПрд╕рд╡реАрдПрди рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред

рдкреНрд░рддрд┐рдмрдВрдз:


рдпрджрд┐ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрдПрдЧреАред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдирд┐рд░реНрдпрд╛рдд рдЖрд░рдУрдПрд╕ рдЦрд╛рддреЛрдВ (рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ) рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдЕрд╡рд╕рд░ рдкрд░, рдореИрдВрдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд▓рд┐рдЦрд╛ рдФрд░ рдЙрдирд╕реЗ рдХрд╣рд╛ рдХрд┐ рдЬрдм рдЕрдВрддрд┐рдо рдмрд╛рд░ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╡реЗ рдирд┐рд░реНрдпрд╛рдд рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╕рдВрд╕реНрдХрд░рдг 5.12 - рдирд┐рд░реНрдпрд╛рдд рдХреЙрдореНрдкреИрдХреНрдЯ рдореЗрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрднреА рддрдХ рдпреЗ рдкреНрд░рддрд┐рдмрдВрдз рдмрдиреЗ рд╣реБрдП рд╣реИрдВред

рдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдордЧреНрд░реА рдФрд░ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:


1. рдореИрдиреБрдЕрд▓: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди
2. рдмреИрдХрдЕрдк рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рдмреАрдЪ рдЕрдВрддрд░-рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреИрд╕реЗ рдХрд░реЗрдВ
3. рдмреИрдХрдЕрдк рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдорд╛рдг рдкрддреНрд░
4. рд░рд┐рдореЛрдЯ рдмрдирд╛рдиреЗ рдмреИрдХрдЕрдк рдлрд╝рд╛рдЗрд▓

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

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


All Articles