Archive for the ‘Linux Style’ Category

使用ncftp工具同步整个文件夹备份到FTP服务器

ncftpput -R -z -u user -p pass remotehost /remote_directory /local_directory 同步整个目录
-R 递归同步
-z 是否断点续传
/remote_directory FTP上面的路径
/local_directory 要备份的路径
配合上次发的Dreamhost空间单用户多网站备份脚本,可以完美的达到备份的目的。

Dreamhost空间单用户多网站备份脚本

代码如下,未测试

有任何建议请和我联系

部份程序参考 http://www.icnote.com/DreamHost-Auto-back-up/

Bash语言: Codee#11847
#工具信息
TAR=`which tar`
MYSQLDUMP=`which mysqldump`

#网站信息
SiteRoot=/home/icnote/
SITE=(‘site1′ ‘site2′ ‘site3′)
#DB INFo
DBNames=(‘dbname1′ ‘dbname2′ ‘dbname3′) #数据库名
DBUsers=(‘username1′ ‘username2′ ‘username3′#数据库用户名
DBPasswds=(’1′ ’2′ ’3′#数据库密码
DBHosts=(‘host1′ ‘host2′ ‘host3′) #数据库地址
DBCharsets=(‘utf8′ ‘utf8′ ‘utf8′)

#路径
BackupPath=/home/hexuzhong/backup/$(date +%y%m%d)/
# 备份文件存放目录
if [ -d $BackupPath ]
then
  rm -rf “$BackupPath”*
else
  mkdir $BackupPath
  chmod 755 $BackupPath -R
fi
LogFile=“$BackupPath”backUp.log

numvalues=${#SITE[@]}
for (( i=1; i < numvalues; i++ )); do
   
    domain=${SITE[i]}
    cd $BackupPath
    ##路径信息
    SiteDir=$SiteRoot$domain
    TempSqlFileName=“$BackupPath$domain”tempSQL.sql
    SiteBackUpName=“$BackupPath$domain”web$(date +%y%m%d).tar.gz
    DBDumpFileName=“$BackupPath$domain”db$(date +%y%m%d).sql.tar.gz

    ###数据库信息###
    DBHost=${DBHosts[i]}
    DBUser=${DBUsers[i]}
    DBPasswd=${DBPasswds[i]}
    DBName=${DBNames[i]}
    DBCharset=${DBCharsets[i]}

    echo “——————————————-” >> $LogFile
    echo $(date +“%y-%m-%d %H:%M:%S”) >> $LogFile
    echo “————————–” >> $LogFile
    echo “Site $domain back up start………….” >> $LogFile
    echo “Web $domain files back up start………….” >> $LogFile

    if [ -f $SiteBackUpName ]
    then
      echo “[$SiteBackUpName]The Backup File is exists,Can’t Backup!” >> $LogFile
    else
      $TAR czvf $SiteBackUpName $SiteDir >> $LogFile
      echo “[$SiteBackUpName]Backup Success!” >> $LogFile
    fi

    echo “Web files back up finished!” >> $LogFile
    echo “Now database dump start” >> $LogFile

    if [ -f $DBDumpFileName ]
    then
      echo “[$DBDumpFileName]The Backup File is exists,Can’t Backup!” >> $LogFile
    else
      $MYSQLDUMP -h$DBHost -u$DBUser -p$DBPasswd –default-character-set=$DBCharset –opt $DBName > $TempSqlFileName
      $TAR czvf $DBDumpFileName $TempSqlFileName >> $LogFile
      rm -rf $TempSqlFileName
      echo “[$DBDumpFileName] Backup Success!” >> $LogFile
    fi

    echo “Now database dump finished!” >> $LogFile
    echo “The whole backup task completed at “$(date +“%y-%m-%d %H:%M:%S”) >> $LogFile
    echo “########################################” >> $LogFile
done

恶心的strtok的实现

留此为鉴

C语言: Codee#6730
01 #include <stdio.h>
02 #include <stdlib.h>
03 #include <string.h>
04
05 char *mystrtok(char *str, const char *delim);
06
07 int main(void) {
08
09         char str[] = “root:x::0:root:/root:/bin/bash:”;
10         char *token;
11
12         token = mystrtok(str, “:”);
13         printf(“%s\n, token);
14         while ( (token = mystrtok(NULL, “:”)) != NULL)
15                 printf(“%s\n, token);
16
17         free(token);
18         return 0;
19 }
20 char *mystrtok(char *str, const char *delim) {
21
22         static char *last;
23         char *t;
24         int i = 0;
25
26         if ((NULL == str) && ((str=last) == NULL ))
27                 return (NULL);
28
29         last = strstr(str, delim);
30
31         if (NULL == last) {
32                 return NULL;
33         } else {
34                 t = malloc(strlen(str) + 1);
35                 memset(t, 0, strlen(t));
36                 for(i=0; i < (strlen(str) - strlen(last)); ++i) {
37
38                         t[i] = str[i];
39                 }
40
41                 while(last == strstr(last, delim))
42                      *last++;
43                 return t;
44         }
45 }

使用colinux安装ubuntu

使用colinux安装ubuntu

1.colinux和ubuntu简介
2.colinux和其它虚拟机相比有什么优势
3.安装和配置colinux
4.其它扩展相关
5.参考
1.colinux和ubuntu简介
 Cooperative Linux is the first working free and open source method for optimally running Linux on Microsoft Windows natively.colinux是一款虚拟机软件和其它的qmenu、vmware、virtualpc类似,但是colinux只能在windows上虚拟linux,官网在这里http://www.colinux.org/

 Ubuntu 发”oo-BOON-too”音,是一款免费、开源、易于使用的linux发行版。官网在这http://www.ubuntu.com/

2.colinux和其它虚拟机相比有什么优势
 colinux其优势是修改了Linux的内核在Windows下使用Ring0(内核层)来直接使用硬件设备,使Kernel“虚拟化”的结果,其特点是由于能直接使用Host上的设备,CPU效率得以提高(据说其效率与直接在机器上装Linux还高,这一点是其它虚拟机软件不能比的)。

3.安装和配置colinux
       从官网http://www.colinux.org/下载最新stable的colinux,在从这里http://sourceforge.net/projects/colinux/files/(选择Images 2.6.x Ubuntu => Ubuntu 9.04 => Ubuntu-9.04-1gb.7z)下载最新的colinux ubuntu的image文件。

       将colinux安装在一个简单的路径如d:\colinux。把下载的ubuntu Image文件一起放到D:\colinux,我们接下来要配置配置文件。

 配置文件内容
______________________________________________________________________________________________
 # 这是核心文件,无需改动
 kernel=vmlinux
 
 # File contains the root file system.
 # Download and extract preconfigured file from SF “Images for 2.6″.
 # 含有根文件系统的文件,其中这个 cobd0 将作为一个Block file存于 Linux OS的 /dev/ 下。
 cobd0=”D:\colinux\Ubuntu-9.04.ext3.1gb.fs”
 
 # coLinux的内核中编译了一个特殊的文件系统 cofs,是为了与Windows共享文件用的,这里共享 d:\
 cofs0=d:\
 
 # Swap device, should be an empty file with 128..512MB.
 # 这是Swap设备指定的文件,这个文件需要另外下载
 cobd1=”d:\colinux\swap.img”
 
 # Tell kernel the name of root device (mostly /dev/cobd0,
 # /dev/cobd/0 on Gentoo)
 # This parameter will be forward to Linux kernel.
 # 这是传递给内核,在哪寻找根文件系统的参数。按照上面的设定,我们将其放到了 /dev/cobd0 下
 root=/dev/cobd0
 
 # Additional kernel parameters (ro = rootfs mount read only)
 # 附加的内核参数,不需改动
 ro
 
 # Initrd installs modules into the root file system.
 # Need only on first boot.
 # 内核启动所需的虚拟软盘镜像,也不需要改动
 initrd=initrd.gz
 
 # Maximal memory for linux guest
 # 这个虚拟机最多使用的内存,单位为兆字节
 mem=256
 
 # Slirp for internet connection (outgoing)
 # Inside running coLinux configure eth0 with this static settings:
 # ipaddress 10.0.2.15   broadcast  10.0.2.255   netmask 255.255.255.0
 # gateway   10.0.2.2    nameserver 10.0.2.3
 # 这是网络配置的内容,在后面将详细谈到,现在先按这个设置
 eth0=slirp,,tcp:5901:5900/tcp:6699:22/udp:6699:22

________________________________________________________________________________ 
将该文件保存到 d:\coLinux 下为 ubuntu.conf

 接着就可以运行以下命令启动了

 1.直接从命令行启动
 C:\> d:\coLinux\colinux-daemon.exe @ubuntu.conf

 2.作为系统服务
 C:\> d:\coLinux\colinux-daemon.exe –install-service “ubuntu” @ubuntu.conf

 于是就可以以服务的方式管理这个虚拟机了。例如启动它:

 c:\> net start ubuntu

 若以服务方式启动,则需要手工打开 Console,才能看到其启动的样子,否则它在后台运行。这个Console在coLinux下,分别为colinux-console-fltk.exe和colinux-console-nt.exe。
 
 网络的配置

 coLinux有三种网络工作模式,即NAT、BRIDGE、TUNTAP。下面只介绍NAT和TUNTAP两种方式,BRIDGE由于我没有试成功,不便说明。

 1. NAT(Network Address Translation,网络地址转换)
  NAT是最常见,也是最容易配置的。NAT的工作模式简单来说,就是由Host OS对外来的请求进行转换,如若有Guest OS需要的包,则直接转换给Guest OS。它的优点就是配置简单,HOST OS程序使用DHCP服务器给GUEST OS分配IP地址,这时Guest OS对外部是不可见的,也就是包只能出,不能进(当然,经过转换的就可以进来)。

  配置文件中关于NAT的配置为

  ethX=slirp,<MAC>,<redirections>

  刚才的配置文件中写道,

  eth0=slirp,,tcp:5901:5900/tcp:6699:22/udp:6699:22
  即没有指定MAC地址,将Guest的5900,22端口映射到Host的5901,6699端口。这时候从外部访问6699和5901,就可以访问到Linux的5900和22端口了!

 2.TUNTAP
  这种连接其实就是在Host OS上建一虚拟网卡与Guest OS通信,组成一个私有网络。通迅之前,在Windows的网络连接设置中,为被coLinux新建的网卡设定一个局域网的IP地址如192.168.10.1 。coLinux的配置文件中此方式为

  ethX=tuntap,<network connection name>,<MAC>

  如果有多个tuntap的网卡,则需要指定一个名称。在此没有那么多复杂的情况,我们就直接使用

  eth0=tuntap

  即可。到了Linux下之后,再利用 ifconfig 来配置网卡,便可通主机通讯了。若要在此方式下让Guest OS上网,则需要启动Windows的Internet连接共享,只要将Internet连接设置为共享,然后指定为TUNTAP共享即可,在此不再赘述。

 

4.其它扩展相关

 1.X的配置 http://colinux.wikia.com/wiki/XCoLinux
 2.添加一个swap分区 http://colinux.wikia.com/wiki/HowtoCreateSwapFile
 3.添加windows硬盘(让colinux使用本机windows的分区) http://colinux.wikia.com/wiki/Partitions#mount_the_partition
 5.增加images文件大小 http://colinux.wikia.com/wiki/ExpandingRoot

5.参考
 1.http://blog.simophin.cn/?p=123
 2.http://colinux.wikia.com/

Tags : , ,