Hongyi Zhao wrote:
> Currently, I've a local Debian mirror for stable/squeeze, and I also have
> the up-to-date DVD iso files for this distribution. See below for detail:
> 1- The local mirror of debian is located at the following location on my
> computer:
> werner@debian-asus:~/software/LocalRepo/apt-mirror/mirror/
> mirror.bjtu.edu.cn/debian$ ls
> dists pool
> 2- The DVD iso files for this distribution are located at the following
> location on my computer:
> werner@debian-asus:~/software/LocalRepo/jigdo/iso-dvd/stable$ ls
> debian-6.0.6-amd64-DVD-1.iso debian-6.0.6-amd64-DVD-5.iso
> debian-6.0.6-amd64-DVD-2.iso debian-6.0.6-amd64-DVD-6.iso
> debian-6.0.6-amd64-DVD-3.iso debian-6.0.6-amd64-DVD-7.iso
> debian-6.0.6-amd64-DVD-4.iso debian-6.0.6-amd64-DVD-8.iso
> Now, I want to use these dvd files to update the local mirror of debian,
> all of the things need to do is sync the newer files in each dists and
> pool directories on the DVD files with the local mirror of debian. […]
Debian is a package-based GNU/Linux distribution that can be updated
automatically via the Internet. It does not appear to be very clever or
useful to synchronize whole DVD images when you can have your own mirror of
the repository with up-to-date packages of the distribution on an as-needed
basis virtually for free.
> So I use the following script named rsync_localrepo.sh for this purpose:
> werner@debian-asus:~$ cat rsync_localrepo.sh
> #!/bin/bash
> if [ -d /media/cdrom ]; then sudo umount /media/cdrom; fi
> for i in *iso
That should be *.iso
> do
> sudo mount -o loop -t iso9660 /home/werner/software/LocalRepo/jigdo/iso-
> dvd/stable/${i} /media/cdrom
> rsync -avuP --temp-dir=/tmp /media/cdrom/dists/ /home/werner/software/
> LocalRepo/apt-mirror/mirror/mirror.bjtu.edu.cn/debian/dists/
> rsync -avuP --temp-dir=/tmp /media/cdrom/pool/ /home/werner/software/
> LocalRepo/apt-mirror/mirror/mirror.bjtu.edu.cn/debian/pool/
> sudo umount /media/cdrom
> done
> But, when I run this script, I meet the following issues:
> ---------------
> werner@debian-asus:~$ ./rsync_localrepo.sh
> umount: /media/cdrom: not mounted
/media/cdrom is considered a directory (-d), but apparently it is not in
mtab(5), therefore umount(8) fails. The reason it is not in mtab(5) is
probably that /media is managed by another layer.
> Usage: mount -V : print version
> mount -h : print this help
> mount : list mounted filesystems
> mount -l : idem, including volume labels
> So far the informational part. Next the mounting.
> The command is `mount [-t fstype] something somewhere'.
> Details found in /etc/fstab may be omitted.
> mount -a [-t|-O] ... : mount all stuff from /etc/fstab
> mount device : mount device at the known place
> mount directory : mount known device here
> mount -t type dev dir : ordinary mount command
> Note that one does not really mount a device, one mounts
> a filesystem (of the given type) found on the device.
> One can also mount an already visible directory tree elsewhere:
> mount --bind olddir newdir
> or move a subtree:
> mount --move olddir newdir
> One can change the type of mount containing the directory dir:
> mount --make-shared dir
> mount --make-slave dir
> mount --make-private dir
> mount --make-unbindable dir
> One can change the type of all the mounts in a mount subtree
> containing the directory dir:
> mount --make-rshared dir
> mount --make-rslave dir
> mount --make-rprivate dir
> mount --make-runbindable dir
> A device can be given by name, say /dev/hda1 or /dev/cdrom,
> or by label, using -L label or by uuid, using -U uuid .
> Other options: [-nfFrsvw] [-o options] [-p passwdfd].
> For many more details, say man 8 mount .
RTFM. ISTM that the order of arguments is wrong; in the manpage examples
for "THE LOOP DEVICE", the -o option always comes last, after the image
argument, the mount point argument and the -t option.
In addition to that, you could try to loop-mount the image into a
subdirectory of /mnt instead of media (which is usually not automatically
managed), but AISB it is far easier to set up a local repository mirror and
only update the packages that are needed by its users.
> sending incremental file list
> rsync: change_dir "/media/cdrom/dists" failed: No such file or directory
> (2)
> sent 12 bytes received 12 bytes 48.00 bytes/sec
> total size is 0 speedup is 0.00
> rsync error: some files/attrs were not transferred (see previous errors)
> (code 23) at main.c(1060) [sender=3.0.7]
> sending incremental file list
> rsync: change_dir "/media/cdrom/pool" failed: No such file or directory
> (2)
> sent 12 bytes received 12 bytes 48.00 bytes/sec
> total size is 0 speedup is 0.00
> rsync error: some files/attrs were not transferred (see previous errors)
> (code 23) at main.c(1060) [sender=3.0.7]
You are rsyncing regardless whether mount(8) worked. Use either `if…fi' or
`&&' to avoid that.
> umount: /media/cdrom: not mounted
You are umount(8)ing regardless whether any of the above worked.
> Could someone please give me some hints on these issues? Thanks in
> advance.
This is not the first time that you have showed yourself to be completely
clueless. Try to learn structured thinking and coding for a change. RTFM,
STFW.
Running the script's shell with the -x switch should help. Other than that,
none of this has to do with shell programming. And BTW, *G*NU is *N*ot
*U*nix.
--
PointedEars
Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.