手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:Linux

perl: warning: Setting locale failed.

由于VPS的空间比较小,所以。。。偷懒装了一个debian,其实还有更小的,但我想debian相对会较小一点。。

在执行一些命令的时候会报这种错误 :

XML/HTML代码(这种错误第一次就会出现在apt-get的时候)
  1. perl: warning: Setting locale failed.  
  2. perl: warning: Please check that your locale settings:  
  3.     LANGUAGE = (unset),  
  4.     LC_ALL = (unset),  
  5.     LANG = "zh_CN.UTF-8"  
  6.     are supported and installed on your system.  
  7. perl: warning: Falling back to the standard locale ("C").  

这个问题其实很简单,摆明了就是没设置本地环境变量嘛,不过,我也没有设置lang为zh_CN呀。这年头,还是en_US比较安全吧。
在ubuntu下面,可以通过:apt-get install language-pack-en-base 来解决,但debian下没有这个命令,所以只能:

XML/HTML代码
  1. export LANGUAGE=en_US.UTF-8  
  2. export LANG=en_US.UTF-8  
  3. export LC_ALL=en_US.UTF-8  
  4. locale-gen en_US.UTF-8  
  5. dpkg-reconfigure locales  

然后会出来一个界面,你在里面选择en_US.UTF-8,然后一切就都解决了。很方便

Tags: debian, ubuntu

备份:自动备份VPS数据到Dropbox

以下的文字来自于网址:http://www.wutianqi.com/?p=3115,我和他一样,都遇到了类似的问题
上个月我的数据全没有了,所幸我真的只丢了一小部分数据。还能忍。但现在。。。我想自动化一点,这样或许会安全一点吧?
全文如下:

最近一直在考虑备份的问题,因为随着站越来越大,付出了两年的心血,如果真因为没有备份而导致数据丢失,那就真是欲哭无泪了,而对于那么多的站点及 数据,如果要时常备份,肯定会烦躁的,在网上找到了一个脚本,专门可以把VPS上的数据和数据库中的数据自动备份到dropbox中。

dropbox是什么?不解释,美丽的度娘,万能的谷哥,等着你去找他们。

脚本来至这个网站:http://davehope.co.uk/Blog/backup-your-linux-vps-to-dropbox/

XML/HTML代码
  1. #!/bin/bash  
  2. DROPBOX_USER="Your Dropbox username"   #dropbox账号  
  3. DROPBOX_PASS="Your Dropbox password"   #dropbox密码  
  4. DROPBOX_DIR="Directory in your dropbox account to store the backups, e.g. /backups" #dropbox中存放备份的文件夹  
  5. BACKUP_SRC="/home /var/www /var/git /etc /root" #VPS中需要备份的目录  
  6. BACKUP_DST="/tmp" #备份存放的地方  
  7. MYSQL_SERVER="127.0.0.1"  #本地数据库服务器  
  8. MYSQL_USER="root"  #数据库用户名  
  9. MYSQL_PASS="Your MySQL password"  #数据库密码  
  10. #下面的就不需要修改了  
  11.   
  12. #  
  13. # Stop editing here.  
  14. NOW=$(date +"%Y.%m.%d")  
  15. DESTFILE="$BACKUP_DST/$NOW.tgz"  
  16.   
  17. #  
  18. # Upload a file to Dropbox.  
  19. # $1 = Source file  
  20. # $2 = Destination file.  
  21. function dropboxUpload  
  22. {  
  23.     #  
  24.     # Code based on DropBox Uploader 0.6 from http://www.andreafabrizi.it/?dropbox_uploader  
  25.     LOGIN_URL="https://www.dropbox.com/login"  
  26.     HOME_URL="https://www.dropbox.com/home"  
  27.     UPLOAD_URL="https://dl-web.dropbox.com/upload"  
  28.     COOKIE_FILE="/tmp/du_cookie_$RANDOM"  
  29.     RESPONSE_FILE="/tmp/du_resp_$RANDOM"  
  30.   
  31.     UPLOAD_FILE=$1  
  32.     DEST_FOLDER=$2  
  33.   
  34.     # Login  
  35.     echo -ne " > Logging in..."  
  36.     curl -s -i -c $COOKIE_FILE -o $RESPONSE_FILE --data "login_email=$DROPBOX_USER&login_password=$DROPBOX_PASS&t=$TOKEN" "$LOGIN_URL"  
  37.     grep "location: /home" $RESPONSE_FILE > /dev/null  
  38.   
  39.     if [ $? -ne 0 ]; then  
  40.         echo -e " Failed!"  
  41.         rm -f "$COOKIE_FILE" "$RESPONSE_FILE"  
  42.         exit 1  
  43.     else  
  44.         echo -e " OK"  
  45.     fi  
  46.   
  47.     # Load home page  
  48.     echo -ne " > Loading Home..."  
  49.     curl -s -i -b "$COOKIE_FILE" -o "$RESPONSE_FILE" "$HOME_URL"  
  50.   
  51.     if [ $? -ne 0 ]; then  
  52.         echo -e " Failed!"  
  53.         rm -f "$COOKIE_FILE" "$RESPONSE_FILE"  
  54.         exit 1  
  55.     else  
  56.         echo -e " OK"  
  57.     fi  
  58.   
  59.     # Get token  
  60.     TOKEN=$(cat "$RESPONSE_FILE" | tr -d '\n' | sed 's/.*<form action="https:\/\/dl-web.dropbox.com\/upload"[^>]*>\s*<input type="hidden" name="t" value="\([a-z 0-9]*\)".*/\1/')  
  61.   
  62.     # Upload file  
  63.     echo -ne " > Uploading '$UPLOAD_FILE' to 'DROPBOX$DEST_FOLDER/'..."  
  64.     curl -s -i -b $COOKIE_FILE -o $RESPONSE_FILE -F "plain=yes" -F "dest=$DEST_FOLDER" -F "t=$TOKEN" -F "file=@$UPLOAD_FILE"  "$UPLOAD_URL"  
  65.     grep "HTTP/1.1 302 FOUND" "$RESPONSE_FILE" > /dev/null  
  66.   
  67.     if [ $? -ne 0 ]; then  
  68.         echo -e " Failed!"  
  69.         rm -f "$COOKIE_FILE" "$RESPONSE_FILE"  
  70.         exit 1  
  71.     else  
  72.         echo -e " OK"  
  73.         rm -f "$COOKIE_FILE" "$RESPONSE_FILE"  
  74.     fi  
  75. }  
  76.   
  77. # Backup files.  
  78. mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$NOW-Databases.sql"  
  79. tar cfz "$DESTFILE" $BACKUP_SRC "$NOW-Databases.sql"  
  80.   
  81. dropboxUpload "$DESTFILE" "$DROPBOX_DIR"  
  82.   
  83. rm -f "$NOW-Databases.sql" "$DESTFILE"  

代码只需要在几个地方修改,已在上面的代码中注释出来。

直接:

XML/HTML代码
  1. #随便找个地方,存放backup.sh,比如我:  
  2. #cd /home/wwwroot/到这里来放置这个shell script  
  3. vi backup.sh  
  4. #粘贴上代码后  
  5. chmod +x backup.sh  
  6. #因为授予了权限,所以直接运行即可:  
  7. ./backup.sh  
  8. #接着设置定时任务,可以man crontab自己看看具体用法  
  9. $ crontab -e  
  10. # m h  dom mon dow   command  
  11. #这里分别对应minute hour 'day of month' month 'day of week'  
  12. #下面这行,意思就是每月第一天备份  
  13. 0 0 1 * *       /bin/bash /home/wwwroot/backup.sh  

OK,玩网站,就一句话,勤备份,靠别人不如靠自己,要想玩得好,首先要勤劳!

---EOF---
其实类似的软件很多,比如 还有google drive,而且相应的工具也已经有了,当然你甚至可以搞一台VPS来做双机互备,rsync,多方便啊。

nohup命令让Linux程序永远在后台执行

一般 来说,我们如果需要在Unix/Linux下,让某个程序后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:/usr/local/mysql/bin/mysqld_safe –user=mysql & ,不过并非每个程序都能够象mysqld一样可以做成守护进程。也许它只是普通程序而已,这时候即使用 & 结尾,如果终端关闭,那么程序也会被关闭。但为了能后台运行,就不得不使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在后台能够一直运行,那么就使用nohup:nohup /root/start.sh &

   

在shell中回车后提示:[~]$ appending output to nohup.out

    原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。但是有时候在这一步会有问题,当把终端关闭后,进程会自动被关闭,察看nohup.out可以看到在关闭终端瞬间服务自动关闭。这是因为,程序在提示了nohup成功后还需要按终端上键盘任意键退回到shell输 入命令窗口,然后通过在shell中输入exit来退出终端;如果你在nohup执行成功后直接点关闭程序按钮关闭终端。所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。

nohup语法

  用途:不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。

  无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

  退出状态:该命令返回下列出口值:

  126 可以查找但不能调用 Command 参数指定的命令。

  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

  nohup命令及其输出文件

  nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

  该命令的一般形式为:nohup command &
       如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:nohup command > myout.file 2>&1 &

 

  在上面的例子中,输出被重定向到myout.file文件中。

Tags: nohup, 后台程序

请问:FastDFS有没有相关的技术文档

我想咨询一下FastDFS有没有相关的技术文档。如果有请告之一下地址。

回答:

简介:http://code.google.com/p/fastdfs/wiki/Overview
安装:http://code.google.com/p/fastdfs/wiki/Setup
C客户端:http://code.google.com/p/fastdfs/wiki/ClientAPIforC
通讯协议:http://code.google.com/p/fastdfs/wiki/CommunicationProtocol

参见FastDFS官方网站:www.csource.org
或者CU论坛:http://linux.chinaunix.net/bbs/forum-75-1.html

FastDFS还是挺有意思的,如果你的需求并不复杂,真是可以用来尝试一下:
FastDFS is an open source high performance distributed file system. It's major functions include: file storing, file syncing and file accessing (file uploading and file downloading), and it can resolve the high capacity and load balancing problem. FastDFS should meet the requirement of the website whose service based on files such as photo sharing site and vidio sharing site.
FastDFS has two roles: tracker and storage. The tracker takes charge of scheduling and load balancing for file access. The storage store files and it's function is file management including: file storing, file syncing, providing file access interface. It also manage the meta data which are attributes representing as key value pair of the file. For example: width=1024, the key is "width" and the value is "1024".

The tracker and storage contain one or more servers. The servers in the tracker or storage cluster can be added to or removed from the cluster by any time without affecting the online services. The servers in the tracker cluster are peer to peer.

The storarge servers organizing by the file volume/group to obtain high capacity. The storage system contains one or more volumes whose files are independent among these volumes. The capacity of the whole storage system equals to the sum of all volumes' capacity. A file volume contains one or more storage servers whose files are same among these servers. The servers in a file volume backup each other, and all these servers are load balancing. When adding a storage server to a volume, files already existing in this volume are replicated to this new server automatically, and when this replication done, system will switch this server online to providing storage services. When the whole storage capacity is insufficiency, you can add one or more volumes to expand the storage capacity. To do this, you need to add one or more storage servers.

The identification of a file is composed of two parts: the volume name and the file name.

----最近正准备尝试,所以就多看了一点:
实战FastDFS:http://blog.csdn.net/column/details/fastdfs.html
FastDFS安装使用:http://soartju.iteye.com/blog/803548

Tags: fastdfs

How-to recover from checksum mismatch errors in SVN

windows和linux有一点不同,即。。。文件名是否区分大小写。于是在SVN里就有了这么纠结的事情,如果将文件名即时改名大小写,SVN会认为这是同一个文件,而不会加到SVN的库里。如果有改动,再提交,我日。尼玛,其他 客户端就会说文件不一样。会报标题出现的错误 ,肿么办??

原文标题来自的文章是出自这里:http://andrew.hedges.name/blog/2009/01/25/how-to-recover-from-checksum-mismatch-errors-in-svn

全英文,有四屏哦(光标回到最上面,按四次空格 可以到底,称之为四屏),如果你兴趣不大,我这里有一个简化版。。。

1、将出错的目录,重新checkout出来到一个新的目录
2、将原svn中的该目录删除
3、将新checkout的目录拷过去,到项目目录里
4、改正用户组权限。
Over了。就是这么简单。。。。

英文是这样说的:

  1. Check out the latest revision of the corrupted directory into a temporary directory
  2. Delete the munged SVN revision files
  3. Copy the correct SVN revision files into the working directory

Over。。。真不难哦

Tags: svn