个人工具

“UbuntuHelp:RsyncCdImage”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
(重定向页面到UbuntuHelp:ZsyncCdImage
 
第1行: 第1行:
 +
#REDIRECT [[UbuntuHelp:ZsyncCdImage]]
 
{{From|https://help.ubuntu.com/community/RsyncCdImage}}
 
{{From|https://help.ubuntu.com/community/RsyncCdImage}}
 
{{Languages|UbuntuHelp:RsyncCdImage}}
 
{{Languages|UbuntuHelp:RsyncCdImage}}
rsync is a wonderful piece of software that only downloads the parts of a file that have changed. https://launchpad.net/products/rsync is a good resource for more information.
 
A nice thing about the way the Ubuntu CDs are constructed is that it's quite easy to keep an up to date local install CD using rsync. Since the daily CDs generally change quite little, it can be processed quite quickly.
 
== Acquiring the ISO ==
 
The various files that you need are at http://cdimage.ubuntu.com It's best to use the torrent file if you can.
 
If you have a local Ubuntu archive mirror or cache, you can also use Jigdo. Rsync is handy for finishing up Jigdo downloads that still have a few missing pieces.
 
== Updating the ISO ==
 
A number of the Ubuntu servers also work as rsync servers with quite similar URIs to the websites. For example:
 
<pre><nowiki>
 
rsync -zhhP rsync://cdimage.ubuntu.com/cdimage/daily-live/current/karmic-desktop-i386.iso .
 
</nowiki></pre>
 
will sync the server's daily Karmic desktop image (for i386) to your local system with an older desktop image already stored on your hard drive. -z is compression, -hh is human readable file size (in KB or MB), and -P is a progress indicator.
 
'''Note:''' If you are using other flavors of Ubuntu don't forget to add the flavor's name in the rsync path after cdimage/, e.g.
 
<pre><nowiki>
 
rsync -zhhP rsync://cdimage.ubuntu.com/cdimage/kubuntu/daily-live/current/karmic-desktop-i386.iso .
 
</nowiki></pre>
 
A slightly more advanced script will automate much of the syncing process. To run this script successfully, you will need to set the '''DIR''' variable according to your needs.  You can set '''ISO''' inside the script or simply pass it in on the command-line (to make it easier to sync multiple ISO images). In some cases you may need to manually set '''ISOPATH''' if you're downloading an image not automatically detected. Add "#!/bin/bash" on Top of the script (It is there in editing-mode).
 
<pre><nowiki>
 
#!/bin/bash
 
#Script for updating individual ISO image at cdimage.ubuntu.com (daily/current versions).
 
#Orginal script written by Henrik Omma, slightly adjusted by Bert Verhaeghe, then a bit by Victor Van Hee
 
#Jeremy Yoder made it try to automatically pick an ISOPATH, adapted to karmic by Christian Bangerter
 
 
# Change this next line to the directory where your previously downloaded iso image sits.
 
DIR="/home/USERNAME/Desktop/karmic"
 
 
# Choose only one of the iso files below and uncomment it
 
ISO="karmic-desktop-amd64.iso"
 
# ISO="karmic-desktop-i386.iso"
 
# ISO="karmic-alternate-amd64.iso"
 
# ISO="karmic-alternate-i386.iso"
 
 
# Uncomment the line below if you want a different image not listed below
 
# ISOPATH="cdimage.ubuntu.com/cdimage/LOCATION/current"
 
 
# Default ISO to the first command-line parameter
 
if [ "$1" != "" ]; then
 
  ISO=$1
 
fi
 
 
if [ "$ISOPATH" = "" ]; then
 
  if [[ "$ISO" =~ "-desktop-" ]]; then
 
    ISOPATH="cdimage.ubuntu.com/cdimage/daily-live/current"
 
  elif [[ "$ISO" =~ "-alternate-" ]]; then
 
    ISOPATH="cdimage.ubuntu.com/cdimage/daily/current"
 
  elif [[ "$ISO" =~ "-dvd-" ]]; then
 
    ISOPATH="cdimage.ubuntu.com/cdimage/dvd/current"
 
  elif [[ "$ISO" =~ "-netbook-remix-" ]]; then
 
    ISOPATH="cdimage.ubuntu.com/cdimage/ubuntu-netbook-remix/daily-live/current"
 
  elif [[ "$ISO" =~ "-server-" ]]; then
 
    ISOPATH="cdimage.ubuntu.com/cdimage/ubuntu-server/daily/current"
 
  else
 
    echo "Unrecognized distribution, set ISOPATH manually"
 
    exit 1
 
  fi
 
fi
 
 
if [ ! -d $DIR ]; then
 
  echo "Sorry, $DIR does not exist"
 
  exit
 
fi
 
 
cd $DIR
 
 
md5sum $ISO | sed -e "s/  / */" > $ISO.md5.local
 
# ^ create identical formatted md5sum file from local copy
 
echo ""
 
echo "########################################"
 
echo "# diff'ing MD5SUMs : local <-> server  #"
 
echo "########################################"
 
 
wget -q http://$ISOPATH/MD5SUMS
 
grep $ISO MD5SUMS > $ISO.md5.server
 
rm MD5SUMS
 
diff -q $ISO.md5.local $ISO.md5.server
 
 
if [ ! $? -eq "0" ]; then
 
        echo ""
 
        echo "!!! MD5SUMs differ !!!"
 
        echo "...Performing rsync..."
 
        echo "###################"
 
        echo "# rsync iso image #"
 
        echo "###################"
 
        rsync -avzhhP rsync://$ISOPATH/$ISO .
 
else
 
        echo ""
 
        echo "MD5SUMs identical -- no need to Rsync"
 
        echo ""
 
        exit 0
 
fi
 
echo ""
 
echo "########################################"
 
echo "# diff'ing MD5SUMs : local <-> server  #"
 
echo "########################################"
 
 
md5sum $ISO | sed -e "s/  / */" > $ISO.md5.local
 
diff -q $ISO.md5.local $ISO.md5.server
 
 
if [ ! $? -eq "0" ]; then
 
        echo ""
 
        echo "!!! MD5SUMs differ !!!"
 
echo "!!! Rsync failed!  !!!"
 
else
 
        echo ""
 
        echo "MD5SUMs identical"
 
echo "SUCCESS!"
 
fi
 
echo ""
 
</nowiki></pre>
 
This script does three things. First, it creates files containing the MD5SUMs of both the current local and server images, and outputs if the MD5SUMs are identical or not. If they are not identical, it syncs your local ISO image to the most recent ISO image on the Ubuntu servers. It then rechecks the new local MD5SUM and compares it to the server image, and outputs if the MD5SUMs are identical or not. 
 
== Using zsync instead ==
 
zsync is another implementation of the same algorithm that rsync uses, but does not require special software
 
at the server end. It seems to be more efficient (require less data to be downloaded) for ISO images.
 
To download or update an image with zsync:
 
<pre><nowiki>
 
zsync http://cdimage.ubuntu.com/daily-live/current/karmic-desktop-amd64.iso.zsync
 
</nowiki></pre>
 
  
 
[[category:UbuntuHelp]]
 
[[category:UbuntuHelp]]

2010年5月20日 (四) 00:07的最新版本