Ubuntu рдореЗрдВ WebDAV рдкреНрд░рдпреЛрдЬреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдмреНрд▓реЙрдЧ рдкрд░ рдЧрдпрд╛ рддреЛ рдореБрдЭреЗ WebDAV рддрдХрдиреАрдХ рдкрд░ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рдереАред рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдмрд╛рдж рдореЗрдВ рдЙрдмрдВрдЯреВ рдореЗрдВ рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдореИрдВ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣рдмреНрд░рд╛рд╣рдмрд░ рдХреЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ рддреАрди рдореБрдЦреНрдп рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:
  1. WebDAV рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдорд╛рдЙрдВрдЯ
  2. рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди (рдпрд╣ рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ рдореЗрдВ рдЕрдирд╕реБрд▓рдЭреА рд╣реИ)
  3. рдЕрдирдорд╛рдЙрдВрдЯ


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


рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдП рдЧрдП рд╡рд┐рдЪрд╛рд░ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2N WebDAV рдЦрд╛рддреЗ рд╣реИрдВред рд╣рдо рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рдЙрдирдореЗрдВ рд╕реЗ N рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рддрд░рд╣ рдХреЗ RAID рдореЗрдВ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдЦрд╛рддрд╛ рдмрдВрдж рд╣реИ рдпрд╛ рдбреЗрдЯрд╛ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рд╣реИ, рддреЛ рд╣рдо рд╢реЗрд╖ N рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреИрдХрдЕрдк рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдРрд╕реА рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдкреНрд░рд╛рд░реНрдердирд╛ ...

0. рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ


рдмрдврд╝рддреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ mhddfs рдФрд░ davfs2 рдкреИрдХреЗрдЬ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рд╣рдо рддреБрд░рдВрдд рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВрдЧреЗ:

sudo apt-get install mhddfs davfs2 


рддрд╛рдХрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдмрдврд╝рддреЗ рд╕рдордп рдкреВрдЫреЗ рдЬрд╛рдиреЗ рдкрд░, рд╣рдо рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ:

 sudo nano /etc/davfs2/secrets 


рдХреЗ рд░реВрдк рдореЗрдВ:

 URL login pass 

рдпрджрд┐ URL рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рд╢реБрд░реБрдЖрддреА рдЪрд░ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддреЗ рд╣реИрдВ:

 # URL  WEBDAV_URL1=URL1 WEBDAV_URL2=URL2 WEBDAV_URL3=URL3 WEBDAV_URL4=URL4 #    WebDAV(  ) WEBDAV_DIR1=/mnt/webdav1/ WEBDAV_DIR2=/mnt/webdav2/ WEBDAV_DIR3=/mnt/webdav3/ WEBDAV_DIR4=/mnt/webdav4/ # ,      WebDAV RAID_DIR=/mnt/webdav RAID_DIR_BACKUP=/mnt/webdav.backup #        #    "user"     SYMLINK_WEBDAV=/home/user/webdav #   ROOT_UID=0 #    $UID 0   root. E_NOTROOT=67 #   root-. ME=`basename $0` 


рддреБрд░рдВрдд рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реВрдЯ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЬрд▓реНрдж рд╣реА рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

 if [ "$UID" -ne "$ROOT_UID" ]; then echo "     root." exit $E_NOTROOT fi 


1. рдмрдврд╝рддреЗ


рд╣рдо рдмрдврд╝рддреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВред

 function mount_webdav() { # ,     , ,  ,  . if [ ! -d "$WEBDAV_DIR1" ]; then echo " $WEBDAV_DIR1" mkdir $WEBDAV_DIR1 fi #  WebDAV  echo " $WEBDAV_DIR1" mount -t davfs -o rw $WEBDAV_URL1 $WEBDAV_DIR1 # ... #    ... #      , #       WebDAV if [ ! -d "$RAID_DIR" ]; then echo " $RAID_DIR" mkdir $RAID_DIR fi echo " $RAID_DIR" mhddfs $WEBDAV_DIR1,$WEBDAV_DIR2 $RAID_DIR -o allow_other if [ ! -d "$RAID_DIR_BACKUP" ]; then echo " $RAID_DIR_BACKUP" mkdir $RAID_DIR_BACKUP fi echo " $RAID_DIR_BACKUP" mhddfs $WEBDAV_DIR3,$WEBDAV_DIR4 $RAID_DIR_BACKUP -o allow_other #       echo "  $SYMLINK_WEBDAV  $SYMLINK_WEBDAV" ln -s $RAID_DIR $SYMLINK_WEBDAV 


2. рд╕рд┐рдВрдХ


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИред рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирдХ rsync рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 function sync_webdav() { #  rsync --progress -zuogthvr --delete-after $RAID_DIR $RAID_DIR_BACKUP } 


рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

3. рдмреЗрд╢реБрдорд╛рд░


рдЕрдирдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рдЕрдкрдиреЗ рдмрд╛рдж рдЦрд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрд┐рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╣рдордиреЗ RAID рдХреА рдЭрд▓рдХ рдмрдирд╛рдИ рд╣реИ рд╡реЗ рдкрд╣рд▓реЗ рдЕрдирдорд╛рдЙрдВрдЯ рд╣реИрдВ (рдареАрдХ рд╣реИ, рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпреЛрдВ)ред

 function umount_webdav() { echo "   $RAID_DIR_BACKUP" umount $RAID_DIR_BACKUP rm -rf $RAID_DIR_BACKUP echo "   $RAID_DIR" umount $RAID_DIR rm -rf $RAID_DIR echo "   $WEBDAV_DIR1" umount $WEBDAV_DIR1 rm -rf $WEBDAV_DIR1 # ... #     ... #    rm $SYMLINK_WEBDAV } 


4. рд╕рд╣рд╛рдпрддрд╛


рдмрд┐рдирд╛ рдорджрдж рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд▓рд┐рдкрд┐ рдХрд╣рд╛рдБ рд╣реИ? рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░реЗрдВред

 function print_help() { echo "   Webdav" echo echo ": $ME options..." echo ":" echo " -m   webdav." echo " -u  ." echo " -s  ." echo " -h ." echo } 


рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорджрдж рдЦреЛрд▓реЗрдВред

 if [ $# = 0 ]; then print_help fi 


5. рд▓рдЧрднрдЧ рдХрд┐рдпрд╛ рд╣реБрдЖ


рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ, рдЬреЛ рд╣рдо рдХрд░реЗрдВрдЧреЗред

 while getopts msuh opt ; do case $opt in m) mount_webdav; ;; s) sync_webdav; ;; u) umount_webdav; ;; h) print_help ;; *) echo " "; echo "    $ME -h"; exit 1 ;; esac done 


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


рдЗрд╕рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреИрдпрд╛рд░ рд╣реИ, рдЬрд┐рд╕реЗ рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдПрдХ рдЧрдВрднреАрд░ рдЙрдкрдХрд░рдг рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Rsync рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЦрд╛рддреЗ рд╕реЗ рдЦрд╛рддреЗ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдбрд┐рд╕реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдЖрдкрдХреА рдХрд▓реНрдкрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡рдпрдВ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рджреВрд╕рд░реА рдЬрдЧрд╣ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реВрдВрдЧрд╛ред

рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреВрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдпрд╣рд╛рдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

PS рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрднреА рднреА рдХрд╛рдлреА рдХрдЪреНрдЪреА рд╣реИред рд▓реЗрдЦ рдХреЛ рдЕрджреНрдпрддрди рдФрд░ рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЦрд╛рд▓реАрдкрди рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ "рдореВрд░реНрдЦ рд╕реЗ" рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред рдмрдиреЗ рд░рд╣реЗрдВ ...

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


All Articles