β Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½, ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π΄Π΅Π΄ΡΠΏΠ»ΠΈΠΊΠ°ΡΠΎΡ β ΡΡΠΈΠ»ΠΈΡΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° Π°ΡΡ ΠΈΠ²Π°ΡΠΎΡ, ΠΊΠΎΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΏΠΈΡ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΡΡ Π΅ΠΌΠΈ Π·Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ½ΠΎ ΠΈ Π΄ΠΈΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ ΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ.
Π’ΠΎΠ²Π° Π΅ ΠΎΠ±Π·ΠΎΡΠ½Π° ΡΡΠ°ΡΠΈΡ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅. Π‘Π°ΠΌΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° hashget (Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡΠΎ) Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ .
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
Π‘ΠΏΠΎΡΠ΅Π΄ ΠΆΠ°Π½ΡΠΎΠ²ΠΈΡ Π·Π°ΠΊΠΎΠ½, ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Ρ ΠΈΠ½ΡΡΠΈΠ³Π°ΡΠ° β ΡΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅:
ΠΠ°Π½Π½ΠΈ
ΡΠ°Π·ΠΏΠ°ΠΊΠΎΠ²Π°Π½ ΡΠ°Π·ΠΌΠ΅Ρ
.tar.gz
hashget .tar.gz
WordPress-5.1.1
43 Mb
11 Mb ( 26% )
155 Kb ( 0.3% )
Linux kernel 5.0.4
934 Mb
161 Mb ( 20% )
4.7 Mb ( 0.5% )
Debian 9 (LAMP) LXC VM
724 Mb
165 Mb ( 23% )
4.1 Mb ( 0.5% )
ΠΡΠ΅Π΄ΠΈΡΡΠΎΡΠΈΡ, ΠΊΠ°ΠΊΡΠ² ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡΡ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π±Π΅ΠΊΡΠΏ
ΠΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ°Π²Π΅Ρ Π±Π΅ΠΊΡΠΏ Π½Π° Π½ΠΎΠ²ΠΎΡΡΠ·Π΄Π°Π΄Π΅Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, Π½Π΅ ΠΌΠ΅ Π½Π°ΠΏΡΡΠΊΠ°ΡΠ΅ ΡΡΠ΅ΡΠ°Π½Π΅ΡΠΎ, ΡΠ΅ Π½Π΅ΡΠΎ ΠΏΡΠ°Π²Ρ Π½Π΅ ΡΠ°ΠΊΠ°. ΠΠ°ΡΠΎ ΠΈΠΌΠ°ΠΌ ΠΎΠ±Π΅ΠΌΠΈΡΡ Π±Π΅ΠΊΡΠΏ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΠΌΠΎΠ΅ΡΠΎ Π±Π΅Π·ΡΠ΅Π½Π½ΠΎ Π½Π΅ΡΠ»Π΅Π½Π½ΠΎ ΡΠ²ΠΎΡΡΠ΅ΡΡΠ²ΠΎ Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ index.html Ρ ΡΠ΅ΠΊΡΡΠ° "ΠΠ΄ΡΠ°Π²Π΅ΠΉ ΡΠ²ΡΡ"?
ΠΠ°ΡΠΎ Π² ΠΌΠΎΡ Π±Π΅ΠΊΡΠΏ ΠΈΠΌΠ° 16-ΠΌΠ΅ΡΡΠΎΠ² /usr/sbin/mysqld? ΠΠ΅ ΠΌΠΈ Π»ΠΈ ΡΠ΅ ΠΏΠ°Π΄Π½Π° ΡΠ΅ΡΡΡΠ° Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΠΌ ΡΠΎΠ·ΠΈ Π²Π°ΠΆΠ΅Π½ ΡΠ°ΠΉΠ», ΠΈ Π°ΠΊΠΎ Π½Π΅ ΡΠ΅ ΡΠΏΡΠ°Π²Ρ β ΡΠΎΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ Π·Π°Π³ΡΠ±Π΅Π½ Π·Π° ΡΠΎΠ²Π΅ΡΠ΅ΡΡΠ²ΠΎΡΠΎ? ΠΠ°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π½Π΅. Π’ΠΎΠΉ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ Π½Π° debian (Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ° ΠΈ Π±Π΅Π·ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π°Ρ Ρ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠ³Π° Π΄Π° ΠΎΡΠΈΠ³ΡΡΡ Π°Π·), ΠΊΠ°ΠΊΡΠΎ ΠΈ Π² ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ (ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΠΎΡ ΡΡΡ ) Π½Π° Π΄ΡΡΠ³ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ. ΠΡΠΆΠ½ΠΎ Π»ΠΈ Π΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ 10 000 000 + 1-Π²Π° ΠΊΠΎΠΏΠΈΡ Π½Π° ΡΠΎΠ·ΠΈ Π²Π°ΠΆΠ΅Π½ ΡΠ°ΠΉΠ» Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ°?
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ΅ΡΠ°Π²Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΠΈ Π·Π°ΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ β ΡΠΎΠΉ ΡΡΠ·Π΄Π°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΡΠΊ Π±Π΅ΠΊΡΠΏ. ΠΡΠΈ ΡΠ°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ β Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ°Π·ΠΎΠΏΠ°ΠΊΠ²Π°Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° Π½Π° ΡΠ°Π·ΠΈ, ΠΊΠΎΡΡΠΎ Π±ΠΈ Π±ΠΈΠ»Π° ΠΏΡΠΈ tar -c / tar -x. (Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, ΡΠΎΠ²Π° Π΅ Π±Π΅Π·Π·Π°Π³ΡΠ±Π½Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡ)
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ hashget
Π hashget ΠΈΠΌΠ° ΠΏΠΎΠ½ΡΡΠΈΡ Package ΠΈ HashPackage, Ρ ΡΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡ ΡΠΎΠΉ ΠΈΠ·Π²ΡΡΡΠ²Π° Π΄Π΅Π΄ΡΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ.
Package (ΠΏΠ°ΠΊΠ΅Ρ). Π€Π°ΠΉΠ» (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π°ΡΡ ΠΈΠ² .deb ΠΈΠ»ΠΈ .tar.gz), ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²Π°Π»Π΅Π½ ΠΎΡ ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΈ ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
HashPackage β ΠΌΠ°Π»ΡΠΊ JSON ΡΠ°ΠΉΠ», ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ Package, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ URL Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ Ρ Π΅Ρ-ΡΡΠΌΠΈΡΠ΅ (sha256) Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π½Π΅Π³ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠ° mariadb-server-core Ρ ΡΠ°Π·ΠΌΠ΅Ρ 5 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ°, ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° hashpackage Π΅ ΡΠ°ΠΌΠΎ 6 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡΠ°. ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Ρ ΠΈΠ»ΡΠ΄Π° ΠΏΡΡΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ.
ΠΠ΅Π΄ΡΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ β ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΡΡ ΠΈΠ² Π±Π΅Π· Π΄ΡΠ±Π»ΠΈΡΠ°Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (Π°ΠΊΠΎ Π΄Π΅Π΄ΡΠΏΠ»ΠΈΠΊΠ°ΡΠΎΡΡΡ Π·Π½Π°Π΅, ΠΎΡΠΊΡΠ΄Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²Π°Π»Π΅Π½ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ, ΡΠΎΠΉ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π² Π°ΡΡ ΠΈΠ²Π°).
ΠΠ°ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°
ΠΡΠΈ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Ρ ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ Ρ Π΅Ρ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΈ Π°ΠΊΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π° Π² Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈΡΠ΅ HashPackage, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° ΡΠ°ΠΉΠ»Π° (ΠΈΠΌΠ΅, Ρ Π΅Ρ, ΠΏΡΠ°Π²Π° Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΈ Ρ.Π½.) ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°Ρ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΠ°ΠΉΠ» .hashget-restore.json, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Π°ΡΡ ΠΈΠ²Π°.
Π‘Π°ΠΌΠΎΡΠΎ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π² Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΎΡ tar:
hashget -zf /tmp/mybackup.tar.gz --pack /path/to/dataΠ Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅
Π Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π² Π΄Π²Π° Π΅ΡΠ°ΠΏΠ°. ΠΡΡΠ²ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ tar ΡΠ°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅:
tar -xf mybackup.tar.gz -C /path/to/dataΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΎΡ ΠΌΡΠ΅ΠΆΠ°ΡΠ°:
hashget -u /path/to/dataΠΡΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ hashget ΡΠ΅ΡΠ΅ ΡΠ°ΠΉΠ»Π° .hashget-restore.json, ΠΈΠ·ΡΠ΅Π³Π»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΡΠ°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π° Π³ΠΈ ΠΈ ΠΈΠ·Π²Π»ΠΈΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°ΠΉΠΊΠΈ Π³ΠΈ Π½Π° Π½ΡΠΆΠ½ΠΈΡΠ΅ ΠΌΠ΅ΡΡΠ°, Ρ Π½ΡΠΆΠ½ΠΈΡΠ΅ owner/group/permissions.
ΠΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΈ Π½Π΅ΡΠ°
Π’ΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅ β Π²Π΅ΡΠ΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π·Π° ΡΠ΅Π·ΠΈ, Π½Π° ΠΊΠΎΠΈΡΠΎ ΠΈΠΌ Π΅ "ΠΈΡΠΊΠ°ΠΌ ΠΊΠ°ΡΠΎ tar, Π½ΠΎ Π΄Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π° ΠΌΠΎΡ Debian Π² 4 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ°". ΠΠΎ-Π½Π°ΡΠ°ΡΡΠΊ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΈ Π½Π΅ΡΠ°.
ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π΅
ΠΠΊΠΎ hashget ΠΈΠ·ΠΎΠ±ΡΠΎ Π½ΡΠΌΠ°ΡΠ΅ Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ HashPackage, ΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΌΠ°ΡΠ΅ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π΅Π΄ΡΠΏΠ»ΠΈΡΠΈΡΠ° Π½ΠΈΡΠΎ.
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° HashPackage ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ°Π½Π΅ ΠΈ ΡΡΡΠ½ΠΎ (ΠΏΡΠΎΡΡΠΎ: hashget --submit https://wordpress.org/wordpress-5.1.1.zip -p my), Π½ΠΎ ΠΈΠΌΠ° ΠΈ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½.
ΠΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π½ΡΠΆΠ½ΠΈΡΠ΅ hashpackage, ΠΈΠΌΠ° Π΅ΡΠ°ΠΏ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π΅ (ΡΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° --pack) ΠΈ Π΅Π²ΡΠΈΡΡΠΈΠΊΠΈ. ΠΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π΅ hashget "ΠΏΡΠ΅Π΄Π»Π°Π³Π°" Π²ΡΠ΅ΠΊΠΈ Π½Π°ΠΌΠ΅ΡΠ΅Π½ ΡΠ°ΠΉΠ» Π½Π° Π²ΡΠΈΡΠΊΠΈ Π½Π°Π»ΠΈΡΠ½ΠΈ Π΅Π²ΡΠΈΡΡΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°Ρ. ΠΠ²ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Ρ Π½ΡΠΊΠΎΠΉ Package, Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π°Ρ HashPackage.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅Π±ΠΈΡΠ½ΡΠΊΠ°ΡΠ° Π΅Π²ΡΠΈΡΡΠΈΠΊΠ° ΠΎΠ±ΠΈΡΠ° ΡΠ°ΠΉΠ»Π° /var/lib/dpkg/status ΠΈ ΠΎΡΠΊΡΠΈΠ²Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈΡΠ΅ debian ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΈ Π°ΠΊΠΎ ΡΠ΅ Π½Π΅ ΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ΠΈ (Π·Π° ΡΡΡ Π½Π΅ ΡΠ° ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ HashPackage), Π³ΠΈ ΠΈΠ·ΡΠ΅Π³Π»Ρ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°. ΠΠΎΠ»ΡΡΠ°Π²Π° ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΡΠ΅Π½ Π΅ΡΠ΅ΠΊΡ β hashget Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π΅Π΄ΡΠΏΠ»ΠΈΡΠΈΡΠ° Π΄Π΅Π±ΠΈΡΠ½ΡΠΊΠΈΡΠ΅ ΠΠ‘, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΠ΅ ΠΈΠΌΠ°Ρ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ.
Π€Π°ΠΉΠ»ΠΎΠ²Π΅-ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ (hintΠΎΠ²Π΅)
ΠΠΊΠΎ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π²ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½ΡΠΊΠ°ΠΊΡΠ² Π²Π°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠ»ΠΈ ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Π΅Π²ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° hashget, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΏΡΠΎΡΡ hint-ΡΠ°ΠΉΠ» hashget-hint.json ΠΏΠΎ ΠΎΠ±ΡΠ°Π·Π΅Ρ:
{
"project": "wordpress.org",
"url": "https://ru.wordpress.org/wordpress-5.1.1-ru_RU.zip"
}Π‘Π»Π΅Π΄ ΡΠΎΠ²Π°, Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° Π°ΡΡ ΠΈΠ², ΠΏΠ°ΠΊΠ΅ΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ (Π°ΠΊΠΎ Π½Π΅ Π΅ Π±ΠΈΠ» ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ ΠΏΡΠ΅Π΄ΠΈ) ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ Π΄Π΅Π΄ΡΠΏΠ»ΠΈΡΠΈΡΠ°Π½ΠΈ ΠΎΡ Π°ΡΡ ΠΈΠ²Π°. ΠΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, Π²ΡΠΈΡΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΎΡ vim ΠΈ Π΄Π° ΡΠ΅ ΡΠΏΠ΅ΡΡΠΈ Π² Π²ΡΡΠΊΠΎ ΠΊΠΎΠΏΠΈΠ΅. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Ρ Ρ Π΅ΡΡΡΠΌΠΈ, Π°ΠΊΠΎ Π½ΡΠΊΠΎΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ» Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ) β ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ Π² Π°ΡΡ ΠΈΠ²Π° "ΠΊΠ°ΠΊΡΠΎ ΡΠ°", Π±Π΅Π· Π΄Π° Π±ΡΠ΄Π°Ρ ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈ.
ΠΠΊΠΎ Π²Π°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ, Π½ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π΅ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ hint ΡΠ°ΠΌΠΎ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π²Π΅ΡΡΠΈΡ 1.0 Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ hint Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° mypackage-1.0.tar.gz, ΠΈ ΡΠΎΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π΅Π΄ΡΠΏΠ»ΠΈΡΠΈΡΠ°Π½, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΈΠ·Π΄Π°Π΄Π΅Π½Π° Π²Π΅ΡΡΠΈΡ 1.1, ΠΊΠΎΡΡΠΎ ΠΌΠ°Π»ΠΊΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°, Π° hint Π½Π΅ Π΅ ΠΎΠ±Π½ΠΎΠ²Π΅Π½. ΠΡΠΌΠ° Π½ΠΈΡΠΎ ΡΡΡΠ°ΡΠ½ΠΎ. ΠΠ΅Π΄ΡΠΏΠ»ΠΈΡΠΈΡΠ°Ρ ΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΡΠ²ΠΏΠ°Π΄Π°Ρ (ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΡ) Ρ Π²Π΅ΡΡΠΈΡ 1.0.
ΠΠ²ΡΠΈΡΡΠΈΠΊΠ°ΡΠ°, ΠΊΠΎΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° hint ΡΠ°ΠΉΠ»Π° β Π΅ Π΄ΠΎΠ±ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π΅Π²ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅. Π’Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ°ΠΌΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ hashget-hint.json (ΠΈΠ»ΠΈ .hashget-hint.json Ρ ΡΠΎΡΠΊΠ°) ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈ. ΠΠΎ ΡΠΎΠ·ΠΈ ΡΠ°ΠΉΠ» ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ, ΠΊΠΎΠΉ URL Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½, Π° hashget Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ° (Π°ΠΊΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈ)
HashServer
ΠΠΈ Π±ΠΈΠ»ΠΎ Π΄ΠΎΡΡΠ° ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π΅. ΠΠ° ΡΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠ²Π°Π»ΠΈ Π²ΡΠ΅ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ, Π΄Π° ΡΠ΅ ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠ° ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°. ΠΠ°ΡΠΎΠ²Π° hashget ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡ Π΅ΠΌΠ° Ρ . ΠΡΠΈ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ debian ΠΏΠ°ΠΊΠ΅Ρ, Π°ΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ Π² Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ HashPackage, ΠΏΡΡΠ²ΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΠΎΠΏΠΈΡ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΡΠ΅ ΡΠ²Π°Π»ΠΈ HashPackage ΠΎΡ Ρ Π΅ΡΡΡΡΠ²Π΅ΡΠ°. Π ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ β hashget ΡΠ°ΠΌ ΡΠ²Π°Π»Ρ ΠΈ Ρ Π΅ΡΠΈΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ° (ΠΈ Π³ΠΎ ΠΊΠ°ΡΠ²Π° Π½Π° hashserver, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° hashserver Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ).
HashServer Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΡΡ
Π΅ΠΌΠ°ΡΠ°, Π½Π΅ Π΅ ΠΊΡΠΈΡΠΈΡΠ΅Π½, ΡΠ»ΡΠΆΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π° ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ°. ΠΠ΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ (Ρ ΠΎΠΏΡΠΈΡ --hashserver Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ). ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π»Π΅ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ .
ΠΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ ΠΈ Π΄ΠΈΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ, ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎ ΠΎΡΡΠ°ΡΡΠ²Π°Π½Π΅
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΡ
Π΅ΠΌΠ° ΠΠ°ΡΠΎ Π΄Π° Π½Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ (Ρ Π²ΡΠΈΡΠΊΠΈ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅)? ΠΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° --submit ΠΈ Π²ΡΠΈΡΠΊΠΎ Π΅ Π³ΠΎΡΠΎΠ²ΠΎ! Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ Π±Π΅ΠΊΠ°ΠΏ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ hashget, Π½ΡΠΌΠ° Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΡΠΎΠ·ΠΈ Π°ΡΡ
ΠΈΠ².
ΠΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΊΠ°ΠΆΠ΅, ΡΠ΅ ΠΏΡΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ hashget-Π±Π΅ΠΊΠ°ΠΏΠΈ ΠΎΡ ΡΡΠ»Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ (Π°ΠΊΠΎ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΈΠΌΠ° ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΡΠ°ΠΉΠ»). ΠΠ° ΡΠΎΠ²Π° ΠΈΠΌΠ° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ . ΠΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅ Π΄Π°ΡΠ° Π½Π° ΠΎΡΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° HashPackage --expires 2019-06-01, ΠΈ ΡΠ»Π΅Π΄ Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ Π΄Π°ΡΠ° (ΠΎΡ 00:00), ΡΠΎΠΉ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½. Π‘Π°ΠΌΠΈΡΡ Π°ΡΡ
ΠΈΠ² ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ ΡΠ΅ ΠΈΠ·ΡΡΠΈΠ²Π° ΡΠ»Π΅Π΄ ΡΠ°Π·ΠΈ Π΄Π°ΡΠ° (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ hashget ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ URL-Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π±Π΅ΠΊΡΠΏΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΈΠ·ΡΠ΅ΠΊΠ»ΠΈ/ΡΠ΅ ΠΈΠ·ΡΠ΅ΠΊΠ°Ρ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ Π½Π° Π²ΡΡΠΊΠ° Π΄Π°ΡΠ°).
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π½Π° 1-Π²ΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΡΠ»Π΅Π½ Π±Π΅ΠΊΠ°ΠΏ ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ° Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΊΡΠ°Ρ Π½Π° ΠΌΠ΅ΡΠ΅ΡΠ° β ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΡ Π΅ΠΌΠ° Π½Π° Π΄ΠΈΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»Π΅Π½ Π±Π΅ΠΊΠ°ΠΏ.
ΠΠΊΠΎ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°ΠΌΠ΅ ΠΈ Π½ΠΎΠ²ΠΈΡΠ΅ Π±Π΅ΠΊΡΠΏΠΈ β ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΡΡ Π΅ΠΌΠ° Π½Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ Π±Π΅ΠΊΡΠΏΠΈ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΡ Π΅ΠΌΠΈ, hashget ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΠ°. ΠΠ΅ΠΊΡΠΏΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠΊΡΠ°ΡΠ΅Π½ ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΊΡΠ°ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ Π±Π΅ΠΊΡΠΏΠΈ (Π°ΠΊΠΎ ΠΈΠΌΠ° ΡΠ°ΠΊΠΈΠ²Π°), ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠ΅Π³Π»ΡΡ).
ΠΠΊΠΎ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° Π½Π΅ ΡΠ΅ Π΄ΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ° Π½Π° Debian ΡΠ΅ΡΡΡΡΠΈΡΠ΅ () ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄ΡΡΠ³Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡ, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π²Π΅Π΄Π½ΡΠΆ ΠΏΡΠ»Π΅Π½ Π±Π΅ΠΊΠ°ΠΏ Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° ΡΠ°Π·ΡΠΈΡΠ°ΠΌΠ΅ Π½Π° Π½Π΅Π³ΠΎ (). Π‘Π΅Π³Π°, Π°ΠΊΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΡΡΠ²ΡΡΠΈ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ ΡΠ΅ ΠΎΠΊΠ°ΠΆΠ°Ρ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΈ (Π² ΡΡΠ²Π΅Π½ΠΈΡΠ½ΠΈΡ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈΠ»ΠΈ ΠΏΡΠΈ Π·ΠΎΠΌΠ±ΠΈ Π°ΠΏΠΎΠΊΠ°Π»ΠΈΠΏΡΠΈΡ), Π½ΠΎ Π½Π°ΡΠΈΡΠ΅ Π±Π΅ΠΊΡΠΏΠΈ ΡΠ° Π² ΡΠ΅Π΄ β ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΎΡ Π²ΡΡΠΊΠ°ΠΊΡΠ² ΠΊΡΠ°ΡΡΠΊ Π΄ΠΈΡ-Π±Π΅ΠΊΠ°ΠΏ, ΡΠ°Π·ΡΠΈΡΠ°ΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎ-ΡΠ°Π½Π½ΠΈ Π±Π΅ΠΊΡΠΏΠΈ.
Hashget ΡΠ°Π·ΡΠΈΡΠ° ΡΠ°ΠΌΠΎ Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΏΠΎ ΠΠΠ¨ΠΠ’Π ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΊΡΠΎ ΡΠΌΡΡΠ°ΡΠ΅, ΡΠ΅ ΡΠ° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ β ΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ.
FilePool ΠΈ Glacier
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π½Π΅ ΡΠ΅ ΠΎΠ±ΡΡΡΠ° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΊΡΠΌ Π²ΡΠ½ΡΠ½ΠΈ ΡΡΡΠ²ΡΡΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΎΡ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΏΠ°ΠΏΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π΅Π½ ΡΡΡΠ²ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
$ hashget -u . --pool /tmp/poolΠΈΠ»ΠΈ
$ hashget -u . --pool http://myhashdb.example.com/ΠΠ° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠ» Π² Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ β Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² Π½Π΅Ρ, hashget ΡΠ°ΠΌ ΠΏΠΎ Ρ
Π΅ΡΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΠΌΡ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠ»Π° Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΡΠ΅Π· HTTP, ΡΡΡΠ±Π²Π° ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠΈΠΌΠ»ΠΈΠ½ΠΊΠΎΠ²Π΅, ΡΠΎΠ²Π° ΡΡΠ°Π²Π° Ρ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° (hashget-admin --build /var/www/html/hashdb/ --pool /tmp/pool). Π‘Π°ΠΌΠΈΡΡ HTTP FilePool β ΡΠΎΠ²Π° ΡΠ° ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½ ΠΎΡ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΡΡ ΡΠ΅Π±ΡΠ΅ΡΠ²Π΅Ρ, Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠ° Π΅ ΠΏΠΎΡΡΠΈ Π½ΡΠ»Π°.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° FilePool ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠ΅ΡΡΡΡΠΈ Π½Π° http(s), Π½ΠΎ ΠΈ, , Amazon Glacier.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±Π΅ΠΊΡΠΏΠ° Π² Π³Π»Π΅ΡΡΠ΅ΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡ Upload ID ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠ°ΡΠΎ URL. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
hashget --submit Glacier_Upload_ID --file /tmp/my-glacier-backup.tar.gz --project glacier --hashserver --expires 2019-09-01Π‘Π΅Π³Π° Π½ΠΎΠ²ΠΈΡΠ΅ (Π΄ΠΈΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ) Π±Π΅ΠΊΡΠΏΠΈ ΡΠ΅ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π°Ρ Π½Π° ΡΠΎΠ·ΠΈ Π±Π΅ΠΊΡΠΏ ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠΎ-ΠΊΡΠ°ΡΠΊΠΈ. Π‘Π»Π΅Π΄ ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈΡ Π±Π΅ΠΊΡΠΏ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π½Π° ΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π°:
hashget --info /tmp/unpacked/ listΠΈ ΠΏΡΠΎΡΡΠΎ ΡΡΡ shell ΡΠΊΡΠΈΠΏΡ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΠΌ ΠΎΡ Π³Π»Π΅ΡΡΠ΅ΡΠ° Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΏΡΠ» ΠΈ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅: hashget -u /tmp/unpacked --pool /tmp/pool
Π‘ΡΡΡΠ²Π° Π»ΠΈ ΡΠΈ ΡΡΠΈΠ»ΠΈΠ΅ΡΠΎ
Π Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ β ΠΏΡΠΎΡΡΠΎ ΡΠ΅ ΠΏΠ»Π°ΡΠ°ΡΠ΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π·Π° Π±Π΅ΠΊΡΠΏΠΈ (Π°ΠΊΠΎ Π³ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π½ΡΠΊΡΠ΄Π΅ Π² ΠΎΠ±Π»Π°ΠΊΠ° Π·Π° ΠΏΠ°ΡΠΈ). ΠΠΎΠΆΠ΅ Π±ΠΈ β ΠΌΠ½ΠΎΠ³ΠΎ-ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ.
ΠΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ Π²ΡΠΈΡΠΊΠΎ. ΠΠ°ΠΊΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ ΡΠΏΠ³ΡΠ΅ΠΉΠ΄ Π½Π° ΡΡ Π΅ΠΌΠ°ΡΠ° Π·Π° Π±Π΅ΠΊΡΠΏΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π±Π΅ΠΊΡΠΏΠΈΡΠ΅ Π½ΠΈ ΡΠ΅Π³Π° ΡΠ° ΠΏΠΎ-ΠΊΡΠ°ΡΠΊΠΈ β ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Π΅ ΠΌΠ΅ΡΠ΅ΡΠ΅Π½ Π±Π΅ΠΊΡΠΏ, Π° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π΅Π½. ΠΠ° Π³ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π½Π΅ ΠΏΠΎΠ»Π³ΠΎΠ΄Π°, ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠ΅Π΄ΠΈ, Π° 5 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. ΠΡΠ΅Π΄ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΠΌΠ΅ Π² Π±Π°Π²Π΅Π½, Π½ΠΎ Π΅Π²ΡΠΈΠ½ "ΡΡΡΠ΄Π΅Π½" Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (Glacier), ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π² Π³ΠΎΡΠ΅ΡΠΎ, ΠΎΡ ΠΊΡΠ΄Π΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ Π±ΡΡΠ·ΠΎ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ Π±Π΅ΠΊΡΠΏ ΠΈ Π΄Π° ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π° ΠΌΠΈΠ½ΡΡΠΈ, Π° Π½Π΅ Π·Π° Π΄Π΅Π½.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΡΠ΅ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π±Π΅ΠΊΡΠΏΠΈΡΠ΅. ΠΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π³ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ Π² Π΅Π΄Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΡΠΎ ΠΊΠ°ΡΠΎ Π½Π°ΠΌΠ°Π»ΠΈΠΌ ΠΎΠ±Π΅ΠΌΠ° Π½Π° Π±Π΅ΠΊΡΠΏΠΈΡΠ΅ β ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ Π² 2-3 Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΄Π° ΠΏΡΠ΅ΠΆΠΈΠ²Π΅Π΅ΠΌ, Π°ΠΊΠΎ Π΅Π΄Π½ΠΎ ΠΎΡ ΡΡΡ ΡΠ΅ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈ.
ΠΠ°ΠΊ Π΄Π° ΠΏΡΠΎΠ±Π²Π°ΡΠ΅ ΠΈ Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅?
ΠΠ»ΠΈΠ·Π°ΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° GitLab , ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Ρ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° (pip3 install hashget[plugins]) ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ΡΠ΅ΠΌ-ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ quick-start. ΠΠΈΡΠ»Ρ, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈΡΠ΅ Π»Π΅ΡΠ½ΠΈ Π½Π΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ, ΡΠ΅ ΠΎΡΠ½Π΅ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 10-15 ΠΌΠΈΠ½ΡΡΠΈ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°ΠΌΠ΅ Π²ΠΈΡΡΡΠ°Π»ΠΊΠΈΡΠ΅ ΡΠΈ, Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ, hint-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π·Π° Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Ρ ΠΎΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅, Π΄Π° ΠΏΠΎΠΈΠ³ΡΠ°Π΅ΠΌ Ρ ΠΏΡΠ»ΠΎΠ²Π΅ΡΠ΅, Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° Π±Π°Π·Π° ΠΎΡ Ρ
Π΅ΡΠΎΠ²Π΅ ΠΈ Ρ
Π΅ΡΡΠ΅ΡΠ²Π΅ΡΠ°, Π°ΠΊΠΎ Π½ΠΈ Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π° Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ Π΄Π΅Π½ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΡΠ² ΡΠ΅ Π΅ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈΡ Π±Π΅ΠΊΡΠΏ Π²ΡΡΡ
Ρ Π²ΡΠ΅ΡΠ°ΡΠ½ΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
