(linux dd if)-编程之家

linux判断目录是否存在-d?

判断目录是否存在用-d例如: if ;then echo “目录存在” else mkdir -p /test/test1 fi

linux限制特定文件大小?

Linux下由于某些用途需要限制个别文件夹大小,可以使用镜像文件挂载的形式来实现。

1、 创建一个指定大小的磁盘镜像文件:dd if=/dev/zero of=/root/disk.img bs=2M count=10。这样就创建了一个大小为20M的磁盘镜像。

2、 挂载为设备:losetup/dev/loop0 /root/disk.img3、 格式化设备:mkfs.ext3/dev/loop04、 挂载为文件夹mkdir /testmount -t ext3 /dev/loop0 /test 这样/mnt/disk1这个文件夹只能使用20M的空间。 5、卸载方法,先卸载文件夹:umount /test6、卸载设备:losetup -d /dev/loop07、如果不再使用可以直接删除镜像文件:rm -f /root/disk.img注意事项:如果loop0不可用可挂载到loop1/loop2/loop3等等。

如何查看swap分区,内存的大小及使用情况?

linux下更改swap大小方法:

以下操作需要root权限,

#cd /usr/;mkdir swap

#dd if=/dev/zero of=swapfile bs=1G count=2

这条命令从硬盘里分出一个 2×1G 大小的空间,挂在swapfile上。

#mkswap swapfile

构建swap格式于/usr/swap/swapfile 上

#swapon swapfile

激活swapfile ,加入到swap分区中。

以上操作在重启系统后swap空间将会失去swapfile ,将swapfile 加入到/etc/fstab

条目将可以使得系统在init进程中调用swapon -a 来自动挂载swapfile ,这样每次机器重启后swapfile

都处于有效的swap空间。

在/etc/fstab文件中加入下面这样一行:

/usr/swap/swapfile swap swap defaults 0 0

Linux如何全盘克隆?

在一个大的linux应用环境中,经常为了避免再次安装,需要简单地复制另一台已经在运行工作的linux服务器而后稍微做些改动即可。相比起windows来说,linux是更可复制的,因为linux内核在启动时是动态检测硬件的,这种操作系统与硬件的无关性使得linux是更可复制的。
二: 两种‘复制’类型。
一是完全的整个操作系统复制,避免重装另一台操作系统和各种应用的编译配置等等。二是单个应用程序复制,这一般是指两台系统在同一系列的内核和发行版本下运行时复制另一台上已经正在运行的应用程序如apache的编译,/usr/local/apache整个目录,及需要用到的库。本文主要讲讲第一种复制。
三:环境
一台已经在工作的linux服务器,简称A,我们准备一个与A相等或更大的空硬盘,再选择一台不论什么与A在本地 或远程网络上运行的linux服务器B。我们把这个空硬盘安装到B上准备复制A到这个空硬盘上,然后就可以拿这个 被复制后的硬盘启动一台与A差不多的linux服务器了。
四:复制后要更改的东西
1。要更改MBR生成正确的新的LILO。
2。IP地址和主机名( /etc/sysconfig/network /etc/sysconfig/network-scripts/ifcfg-ethX,
/etc/HOSTNAME, /etc/resolv.conf ,/etc/hosts,/etc/hosts.allow,/etc/hosts.deny,/etc/fstab)
3. 路由表及网关信息( netstat -nr ,ifconfig,/sbin/route )
五: 通过FTP方法的远程复制过程
1. 移走服务器A上的/etc/ftpusers文件中的root行,允许远程用户可以root进行FTP登录。
2。如果有设置/etc/hosts.allow,则允许服务器B可以FTP进来,且设置/etc/inetd.conf开启FTP服务
3。将空硬盘分区且mount到服务器B上,你可按服务器A的分区方法对该硬盘做同样分区,也可以少分一些区,但 你需要保证/boot分区在1024柱面上,以免lilo找不到内核无法启动。我们假定原服务器A有分区/boot /var /tmp /usr / /home SWAP.则相应地对该空硬盘做同样分区,如果还剩下空间,则分成一个区准备放置从A FTP下来的文件,如果没有空间,则要想办法放到服务器B的硬盘上了。
4。 B# ftp A
root
rootpassword
bin
lcd /tmp
cd /
hash (因为文件较大,把hash标志打开可看到是否东西在传送)
get boot.tar ( 将把A上的/boot目录整个tar作为一个文件boot.tar 服务器A的/tmp下)
get var.tar
get tmp.tar
get usr.tar
get home.tar
get bin.tar
get sbin.tar
get etc.tar
get dev.tar
get lib.tar
注意:不要tar /proc,这是运行中的内核在内存中的映像。
5。把空硬盘分区后分别mount所有分区到
/mnt/newhd/boot,/mnt/newhd/var,/mnt/newhd/tmp,/mnt/newhd/usr,
/mnt/newhd/home,/mnt/newhd/bin,/mnt/newhd/sbin,/mnt/newhd/etc,
/mnt/newhd/dev,/mnt/newhd/lib
6. cd /mnt/newhd;tar xvf /tmp/*.tar
7. mkdir /mnt/newhd/proc (非常重要)
8. 更改前面提到的所有相关文件,仔细检查,如硬盘接口类型不同,还需要更改/etc/fstab,
如新服务器上的网卡和SCSI类型不同,改/etc/conf.modules or /etc/modules.conf
9. 运行sync;sync;sync;reboot
六:如何更新LILO
a. cdrom 启动后安装LILO
现在挂接这个被复制的硬盘作为启动盘,但以CDROM启动,启动时指定参数vmlinuz root=/dev/hdaX.
启动后运行/sbin/lilo即可
b. 软盘启动,可从

www.toms.net/rb/home.html

下载带根文件系统的单linux软盘启动后 mount /dev/hda所有分区到/mnt/hda下,然后chroot /mnt/hda; /sbin/lilo c. 以服务器B上的原硬盘启动,mount这个被复制的硬盘的各个分区到/mnt/hd/boot,/mnt/hd/etc…… ….然后改/mnt/hd/etc/lilo.conf中的目录都在前面加上/mnt/hd,且改boot=/dev/hda作为/dev/hdb… 最后/sbin/lilo -C /mnt/hd/etc/lilo.conf,再改回原先的/mnt/hd/etc/lilo.conf d.在服务器B启动后放一张软盘到软驱#dd if=/boot/vmlinuz of=/dev/fd0,然后rdev /dev/fd0 /dev/hdaX (X为那个空硬盘/boot分区的分区号)。 七:其它常见问题解答 a. 开始启动被复制的硬盘后检查文件系统时出错,或者/etc/fstab中某些分区不能mount和找到 系统要求给出root密码或ctrl+d重启,怎么办? 可回到前面把这个硬盘再次mount到服务器B改东西。 或者启动时指定linux single init=/bin/bash,它将drop给你一个shell. 然后mount /dev/hda1 -o remount -o rw ; mount -a; e2fsck -f /dev/hdaX,此时根文件系统/dev/hda1 被重新mount成可读写的。再改/etc/fstab,/etc/lilo.conf..等等