2015年4月

如果你是那种使用各式设备在网上工作的人,我相信你肯定需要一个在不同设备间同步文件及目录的方法,至少是非常渴望有这种功能。

BitTorrent Sync简称btsync,是一个基于BitTorrent(著名P2P文件分享协议)的免费跨平台同步工具。与传统BitTorrent客户端不同的是,btsync可以在不同操作系统及设备之间加密数据传输和基于自动生成的密钥来授予访问共享文件的权限。

更具体点,当你想要通过btsync共享一些文件或文件夹,相应的读/写密钥(所谓的密码)就创建好了。这些密钥可以通过HTTPS链接,电子邮件,二维码等在不同的设备间共享传递。一旦两台设备通过一个密钥配对成功,其所对应的内容将会直接在其间同步。如果没有事先设置,传输将不会有文件大小和速度的限制。你可以在btsync中创建账号,这样你可以通过 web 界面来创建和管理通过网络分享的密钥和文件。

BitTorrent Sync可以在许多的操作系统上运行,包括Linux,MacOS X,Windows,在 AndroidiOS上也可以使用。在这里,我们将教你在Linux环境(一台家用服务器)与Windows环境(一台笔记本电脑)之间如何使用BitTorrent Sync来同步文件。

Linux下安装btsync

BitTorrent Sync可以在项目主页直接下载。由于Windows版本的BitTorrent Syn安装起来十分简单,所以我们假设笔记本上已经安装了。我们把焦点放到Linux服务器上的安装和配置。

在下载页面中选择你的系统架构,右键相应链接,复制连接地址(或者类似的功能,不同浏览器可能不同),将链接粘贴到在终端中用wget下载,如下:

64位Linux:

# wget http://download.getsyncapp.com/endpoint/btsync/os/linux-x64/track/stable 

32位Linux:

# wget http://download.getsyncapp.com/endpoint/btsync/os/linux-i386/track/stable 

下载完成后,把包中内容解压到你专门创建的目录中,为了完成这些:

# cd /usr/local/bin
# mkdir btsync
# tar xzf stable -C btsync 

现在你可以选择将/usr/local/bin/btsync添加到环境变量PATH中去。

export PATH=$PATH:/usr/local/bin/btsync

或者在该文件夹中运行btsync的二进制文件。我们推荐使用第一种方式,虽需要少量的输入但更容易记忆。

配置btsync

btsync带有一个内置的网络服务器,用作其管理接口。想要使用这个接口你需要创建一个配置文件。你可以使用以下命令来创建:

# btsync --dump-sample-config > btsync.config 

然后使用你最常用的编辑器对btsync.config文件的(webui部分)作以下修改

"listen" : "0.0.0.0:8888",
"login" : "yourusername",
"password" : "yourpassword"

你可以选择任何用户名和密码。

如果你将来想要优化一下它的配置,可以看一下 /usr/local/bin/btsync 目录下的 README 文件,不过现在我们先继续下面的步骤。

第一次运行btsync

作为一个系统的最高执行者我们需要依赖日志文件!所以在我们启动btsync之前,我们将先为btsync创建一个日志文件。

# touch /var/log/btsync.log 

最后,让我们启动btsync:

# btsync --config /usr/local/bin/btsync/btsync.config --log /var/log/btsync.log 

现在在你的浏览器中输入正在运行的btsync所监听的服务器IP地址和端口(我这是192.168.0.15:8888),同意其隐私政策,条款和最终用户许可协议:

这样页面就会转到你安装的btsync主页:

点击添加文件夹并在你的文件系统中选择一个你想要分享的目录,在我们的例子中,我们使用的是/btsync:

现在这样就够了。在运行接下来的步骤之前,请先在Windows主机(或你想使用的其他Linux设备)上安装BitTorrent Sync。

btsync分享文件

这个视频(需要翻墙)展示了如何在安装Windows8的电脑[192.168.0.106]上分享现有的文件夹。在添加好想要同步的文件夹后,你会得到它的密钥,通过“Enter a key or link”菜单(上面的图已经展示过了)添加到你安装到的Linux机器上,并开始同步。

现在用别的设备试试吧;找一个想要分享的文件夹或是一些文件,并通过Linux服务器的网络接口将密钥导入到你安装的“中央”btsync中。

以常规用户开机自动运行btsync

你们可能注意到了,视频中在同步文件时是使用'root'组的用户创建/btsync目录的。那是因为我们使用超级用户手动启动BitTorrent Sync的原因。在通常情况下,你会希望它开机自动使用无权限用户(www\_data或是专门为此创建的账户,例如btsync)启动。

所以,我们创建了一个叫做btsync的用户,并在/etc/rc.local文件(exit 0 这一行前)添加如下字段:

sudo -u btsync /usr/local/bin/btsync/btsync --config /usr/local/bin/btsync/btsync.config --log /var/log/btsync.log

最后,创建pid文件:

# touch /usr/local/bin/btsync/.sync/sync.pid 

并递归更改 /usr/local/bin/btsync的所属用户:

# chown -R btsync:root /usr/local/bin/btsync 

现在重启试试,看看btsync是否正在由预期中的用户运行:

基于你选择的发行版不同,你可能找到不同的方式来开机自启动btsync。在本教程中,我选择rc.local的方式是因为它在不同发行版中都可使用。

尾注

如你所见,BitTorrent Sync对你而言几乎就像一个无服务器的Dropbox。我说“几乎”的原因是:当你在局域网内同步数据时,同步在两个设备之间直接进行。然而如果你想要跨网段同步数据,并且你的设备可能要穿过防火墙的限制来配对,那就只能通过一个提供BitTorrent的第三方中继服务器来完成同步传输。虽然声称传输经过 AES加密,你还是可能会遇到不想发生的状况。为了你的隐私着想,务必在你共享的每个文件夹中关掉中继/跟踪选项。

希望这些对你有用!分享愉快!


via: http://xmodulo.com/share-files-between-computers-over-network.html

作者:Gabriel Cánepa 译者:martin2011qi 校对:校对者ID

本文由 LCTT 原创翻译,Linux中国 荣誉推出

问题:

在读K&R版的The C Programming Language一书时,我在[介绍,第3页]看到这样一条说明:

因为C语言提供的数据类型和控制结构可以直接被大部分计算机系统所支持,所以在实现自包含程序时所需要的运行库文件一般很小。

这段黑体说明了什么?能否找到一个例子来说明C语言中的某种数据类型或控制结构不被某种计算机系统直接支持呢?

回答:

事实上,C语言中确实有不被直接支持的数据类型。

在许多嵌入式系统中,硬件上并没有浮点运算单元。因此,如果你写出下面的代码:

float x = 1.0f, y = 2.0f;
return x + y;

可能会被转化成下面这种形式:

unsigned x = 0x3f800000, y = 0x40000000;
return _float_add(x, y);

然后编译器或标准库必须提供'floatadd()'的具体实现,这会占用嵌入式系统的内存空间。依此去计算代码在某个微型系统(译者注:也就是指微型嵌入式系统)的实际字节数,也会发现有所增加。

另一个常见的例子是64位整型数(C语言标准中'long long'类型是1999年之后才出现的),这种类型在32位系统上也不能直接使用。古董级的SPARC系统则不支持整型乘法,所以在运行时必须提供乘法的实现。当然,还有一些其它例子。

其它语言

相比起来,其它编程语言有更加复杂的基本类型。

比如,Lisp中的symbol需要大量的运行时实现支持,就像Lua中的table、Python中的string、Fortran中的array,等等。在C语言中等价的类型通常要么不属于标准库(C语言没有标准symbol或table),要么更加简单,而且并不需要那么多的运行时支持(C语言中的array基本上就是指针,以NULL结尾的字符串实现起来也很简单)。

控制结构

异常处理是C语言中没有的一种控制结构。非局部的退出只有'setjmp()'和'longjmp()'两种,只能提供保存和恢复某些部分的处理器状态。相比之下,C++运行时环境必须先遍历函数调用栈,然后调用析构函数和异常处理函数。


via:stackoverflow

作者:Dietrich Epp 译者:KayGuoWhu 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

在Fedora中,为了获得最好的GNOME桌面体验,你需要了解并掌握一些驾驭系统的快捷键。

这篇文章将列举我们日常使用中使用频率最高的快捷键。

1. Super键

GNOME Keyboard Shortcuts - The Super Key.

GNOME 快捷键 - super键

“super”键是如今驾驭操作系统的好朋友。

在传统的笔记本电脑中“super”键坐落于最后一列就在“alt”键的旁边(就是徽标键)。

当你按下“super”键后“activities”总览图就会出现,你就能看见所有打开应用的缩略图。

同时按下 "ALT" 和"F1"一样可以达到这样的效果。

2. 如何快速执行一条命令

GNOME Run Command.

GNOME 运行某命令

如果你需要快速的执行一条指令,你可以按下"ALT"+"F2",这样就会出现指令运行对话框了。

现在你就可以在窗口中输入你想要执行的指令了,回车执行。

3. 快速切换到另一个打开的应用

TAB Through Applications.

使用TAB在应用中切换

就像在微软的Windows下一样你可以使用"ALT"和"TAB" 的组合键在应用程序之间切换。

在一些键盘上tab键上画的是这样的|<- ->|,而有些则是简单的"TAB"字母。

GNOME应用切换器随着你的切换,显示简单的图标和应用的名字。

如果你按下"shift"+"tab"将以反序切换应用。

4. 在同一应用中快速切换不同的窗口

Switch Windows In The Same Application.

在应用中切换不同窗口

如果你像我一样经常打开五六个Firefox。

你已经知道通过"Alt"+"Tab"实现应用间的切换。有两种方法可以在同一个应用中所有打开的窗口中切换。

第一种是按"Alt"+"Tab"让选框停留在你所要切换窗口的应用图标上。短暂的停留等到下拉窗口出现你就能用鼠标选择窗口了。

第二种也是比较推荐的方式是按"Alt"+"Tab"让选框停留在你所要切换窗口的应用图标上,然后按"super"+"`"在此应用打开的窗口间切换。

注释:""就是tab键上面的那个键。无论你使用的那种键盘排布,用于切换的键一直都是tab上面的那个键,所以也有可能不是""键。

如果你的手很灵活(或者是我称之为忍者手的)那你也可以同时按"shift", "`"和"super"键来反向切换窗口。

5. 切换键盘焦点

Switch Keyboard Focus.

切换键盘焦点

这个键盘快捷键并不是必须掌握的,但是还是最好掌握。

如若你想将输入的焦点放到搜索栏或者一个应用窗口上,你可以同时按下"CTRL", "ALT"和"TAB",这样就会出现一个让你选择切换区域的列表。

然后就可以按方向键做出选择了。

6. 显示所有应用程序列表

Show All Applications.

显示所有应用程序

如果恰巧最后一个应用就是你想要找的,那么这样做真的会帮你省很多时间。

按"super"和"A"键来快速切换到这个包含你系统上所有应用的列表上。

7. 切换工作区

Switch Workspaces.

切换工作区

如果你已经使用linux有一段时间了,那么这种多工作区切换的工作方式一定深得你心了吧。

举个例子,你在第一个工作区里做开发,第二个之中浏览网页,而把你邮件的客户端开在第三个工作区中。

工作区切换你可以使用"super"+"Page Up" (向上翻页)键朝一个方向切,也可以按"super"+"Page Down" (向下翻页)键朝另一个方向切。

还有一个比较麻烦的备选方案就是按"super"显示打开的应用,然后在屏幕的右侧选择你所要切换的工作区。

8. 将一些项目移至一个新的工作区

Move Application To Another Workspace.

将应用移至另一个工作区

如果这个工作区已经被搞得杂乱无章了,没准你会想将手头的应用转到一个全新的工作区,请按组合键"super", "shift"和"page up"或"super", "shift"和"page down" 键。

备选方案按"super"键,然后在应用列表中找到你想要移动的应用拖到屏幕右侧的工作区。

9. 显示信息托盘

Show The Message Tray.

显示信息托盘

消息托盘会提供一个通知列表。按"super"+"M"呼出消息托盘。

备选方法是鼠标移动到屏幕右下角。

10. 锁屏

Lock The Screen.

锁屏

想要休息一会喝杯咖啡?不想误触键盘?

无论何时只要离开你的电脑应该习惯性的按下"super"+"L"锁屏。

解锁方法是从屏幕的下方向上拽,输入密码即可。

11. 关机

Control Alt Delete Within Fedora.

Fedora中Control+Alt+Delete

如果你曾是windows的用户,你一定记得著名的三指快捷操作CTRL+ALT+DELETE。

如果在键盘上同时按下CTRL+ALT+DELETE,Fedora就会弹出一则消息,提示你的电脑将在60秒后关闭。

12. 编辑快捷键

在各类操作系统中编辑快捷键都大同小异。

  • CTRL + A - 全选
  • CTRL + X - 剪切
  • CTRL + C - 复制
  • CTRL + V - 粘贴
  • CTRL + Z - 撤销

13. 截屏

和编辑快捷键一样,截屏键也就那么基础的几个。

  • PRTSC (Print Screen) - 截屏
  • Alt + PRTSC - 当前窗口截图
  • Shift + PRTSC - 所选区域截图

这里还有一个比较特殊的按键,主要是为了大家可以更容易的制作视频教程的。

  • CTRL + ALT + SHIFT + R - 录制视频
  • CTRL + ALT + SHIFT + R 第二次按下时 - 停止录制

录制的内容将以webm格式保存于当前用户家目录下的录像文件夹中。

14. 并排显示窗口

Put Windows Side By Side.

并排显示窗口

你可以将一个窗口靠左占满左半屏,另一个窗口靠右占满右半屏,让两个窗口并排显示。

也可以按"Super"+"←"(左箭头)让当前应用占满左半屏。按"Super"+"→"(右箭头)让当前应用占满右半屏。

15. 窗口的最大化,最小化和恢复

双击标题栏可以最大化窗口。

最大化后的窗口再双击就会还原至原大小。

右键菜单选择"最小化"就可以最小化了。

16. 总结

GNOME Keyboard Shortcut Cheat Sheet.

GNOME快捷键速查表

我做了一份快捷键速查表,你可以打印出来贴在墙上,这样一定能够更快上手。

当你掌握了这些快捷键后,你一定会感慨这个桌面环境使用起来是如此的顺手。


via: http://linux.about.com/od/howtos/tp/Fedora-GNOME-Keyboard-Shortcuts.htm

作者:Gary Newell 译者:martin2011qi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

如果SSH是系统管理员世界的"瑞士军刀"的话,那么Nmap就是一盒炸药。炸药很容易被误用然后将你的双脚崩掉,但是也是一个很有威力的工具,能够胜任一些看似无法完成的任务。

大多数人想到Nmap时,他们想到的是扫描服务器,查找开放端口来实施攻击。然而,在过去的这些年中,这样的超能力在当你管理服务器或计算机遇到问题时也是非常的有用。无论是你试图找出在你的网络上有哪些类型的服务器使用了指定的IP地址,或者尝试锁定一个新的NAS设备,以及扫描网络等,都会非常有用。

下图显示了我的QNAP NAS的网络扫描结果。我使用该设备的唯一目的是为了NFS和SMB文件共享,但是你可以看到,它包含了一大堆大开大敞的端口。如果没有Nmap,很难发现机器到底在运行着什么玩意儿。

网络扫描

另外一个可能你没想到的用途是用它来扫描一个网络。你甚至根本不需要root的访问权限,而且你也可以非常容易地来指定你想要扫描的网络地址块,例如输入:

nmap 192.168.1.0/24

上述命令会扫描我的局域网中全部的254个可用的IP地址,让我可以知道那个是可以Ping的,以及那些端口是开放的。如果你刚刚在网络上添加一个新的硬件,但是不知道它通过DHCP获取的IP地址是什么,那么此时Nmap就是无价之宝。例如,上述命令在我的网络中揭示了这个问题:

Nmap scan report for TIVO-8480001903CCDDB.brainofshawn.com (192.168.1.220)
Host is up (0.0083s latency).
Not shown: 995 filtered ports
PORT     STATE  SERVICE
80/tcp   open   http
443/tcp  open   https
2190/tcp open   tivoconnect
2191/tcp open   tvbus
9080/tcp closed glrpc

它不仅显示了新的Tivo 设备,而且还告诉我那些端口是开放的。由于它的可靠性、可用性以及“黑边帽子”的能力,Nmap获得了本月的 <<编辑推荐>>奖。这不是一个新的程序,但是如果你是一个linux用户的话,你应该玩玩它。


via: http://www.linuxjournal.com/content/nmap%E2%80%94not-just-evil

作者:Shawn Powers 译者:theo-l 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

问题

我遇到了无法在Ubuntu 14.04中清空回收站的问题。我右键回收站图标并选择清空回收站,就像我一直做的那样。我看到进度条显示删除文件中过了一段时间。但是它停止了,并且Nautilus文件管理也停止了。我不得不在终端中停止了它。

但是这很痛苦因为文件还在垃圾箱中。并且我反复尝试清空后窗口都冻结了。

方案

老实说,我不知道什么导致了这个问题。但是我有一个解决方案如果你在Ubuntu 14.04或者14.10遇到这个问题的话。

打开终端并使用下面的命令:

sudo rm -rf ~/.local/share/Trash/*

这里注意你的输入。你使用超级管理员权限来运行删除命令。我相信你不会删除其他文件或者目录。

上面的命令会删除回收站目录下的所有文件。换句话说,这是用命令清空垃圾箱。使用完上面的命令后,你会看到垃圾箱已经清空了。如果你清空了所有文件,你不应该在看到Nautilus崩溃的问题了。

对你有用么?

我希望这篇贴士对你有用,今后你也不会在Ubuntu或者其他发行版中再遇到相同的问题。如果你遇到任何问题请让我知道。


via: http://itsfoss.com/fix-empty-trash-ubuntu/

作者:Abhishek 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

大家好!这是一篇介绍如何在服务器或个人电脑上从MySQL迁移到MariaDB的教程。也许你会问为什么我们要将数据库管理从MySQL迁移到MariaDB。往下看我们告诉你为什么这样做。

为什么要用MariaDB来代替MySQL

MariaDB是MySQL社区开发的分支,也是一个增强型的替代品。它由MySQL前开发者们带头组织的基金会开发,使用起来和MySQL完全一样。自从Oracle买下了MySQL,它就不再自由开源了,但是 MariaDB仍然自由开源。一些如谷歌、维基、LinkedIn、Mozilla等的顶级的网站已经迁移到MariaDB了。它的优势在哪里:

  • 向后兼容MySQL
  • 永远开源
  • 由MySQL缔造者的维护
  • 更尖端的功能
  • 更多的存储引擎
  • 大型的网站已经转向MariaDB

现在,让我们迁移到MariaDB吧!

让我们创建一个叫linoxidedb用于测试的示例数据库。

使用以下命令用root账户登陆MySQL:

$ mysql -u root -p

输入mysql 的 root 用户密码后,你将进入mysql的命令行

创建测试数据库:

在mysql命令行输入以下命令以创建测试数据库。

mysql> create database linoxidedb;

查看可用的数据库,输入以下命令:

mysql> show databases;

creating test databases

如你所见,算上刚刚新建的linoxidedb我们一共有5个数据库。

mysql> quit

现在,我们就将刚创建的数据库从MySQL迁移到MariaDB。

注:使用CentOS这类基于fedora的linux发行版没有必要参考这篇教程,因为它们在安装MariaDB时会自动代替MySQL,无需备份现有的数据库,你只需要更新mysql就可以得到mariadb。

1. 备份现有的数据库

我们第一个重要的步骤就是备份现有的数据库。我们在终端(不是MySQL命令行)里输入如下命令来完成备份。

$ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql

哇哦!我们遇到了点麻烦。别担心我们可以搞定。

$ mysqldump: Error: Binlogging on server not active

mysqldump error

为了修复这个错误,我们需要对my.cnf文件做一些小改动。

编辑my.cnf文件:

$ sudo nano /etc/mysql/my.cnf

在[mysqld]部分添加如下参数。

log-bin=mysql-bin

configuring my.cnf

好了,在保存并关闭文件后,我们需要重启一下mysql服务。运行以下命令重启:

$ sudo /etc/init.d/mysql restart

现在,重新运行mysqldump命令来备份所有的数据库。

$ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql

dumping databases

上面的命令将会备份所有的数据库,把它们存储在当前目录下的backupdatabase.sql文件中。

2. 卸载MySQL

首先,我们得把my.cnf文件挪到安全的地方去

:在你卸载MySQL包的时候不会自动删除my.cnf文件,我们这样做只是以防万一。在MariaDB安装时,它会询问我们是保持现存的my.cnf文件,还是使用包中自带的版本(即新my.cnf文件)。

在shell或终端中输入如下命令来备份my.cnf文件:

$ sudo cp /etc/mysql/my.cnf my.cnf.bak

运行命令来终止mysql服务:

$ sudo /etc/init.d/mysql stop

然后移除mysql包:

$ sudo apt-get remove mysql-server mysql-client

uninstalling mysql

3. 安装MariaDB

这是在Ubuntu系统中安装MariaDB的命令:

$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
# sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main'

adding mariadb repo

键值导入并且添加完仓库后,你就可以用以下命令安装MariaDB了:

$ sudo apt-get update
$ sudo apt-get install mariadb-server

installing mariadb

my.conf configuration prompt

我们应该还没忘记在MariaDB安装时,它会问你是使用现有的my.cnf文件,还是包中自带的版本。你可以使用以前的my.cnf也可以用包中自带的。即使你想直接使用新的my.cnf文件,你依然可以晚点时候将以前的备份内容还原进去(别忘了我们已经将它复制到安全的地方了)。所以,我们直接选择了默认的选项“N”。如果需要安装其他版本,请参考MariaDB官方仓库

4. 恢复配置文件

想要将my.cnf.bak中的内容恢复到my.cnf,在终端中输入以下命令。由于my.cnf.bak文件在当前目录下,所以我们只要简单的执行以下命令即可:

$ sudo cp my.cnf.bak /etc/mysql/my.cnf

5. 导入数据库

最后,让我们把我们之前创建的数据库导入吧!运行一下命令即可完成导入。

$ mysql -u root -p < backupdatabase.sql

就这样,我们已成功将之前的数据库导入了进来。

来,让我们登录一下mysql命令行,检查一下数据库是否真的已经导入了:

$ mysql -u root -p

importing database

为了检查数据库是否被迁移到MariaDB,请在MariaDB命令行中输入“show databases;”不用输入(“”),如下:

mariaDB> show databases;

mysql to mariadb database migrated

如你所见,linoxidedb及所有的数据库都已经成功的被迁移了。

总结

最后,我们已经成功地从MySQL迁移到了MariaDB数据库管理系统。MariaDB比MySQL好,虽然在性能方面MySQL还是比它更快,但是MariaDB的优点在于它额外的特性与支持的许可证。这能够确保它自由开源(FOSS),并永久自由开源,相比之下MySQL还有许多额外的插件,有些不能自由使用代码、有些没有公开的开发进程、有些在不久的将来会变的不再自由开源。如果你有任何的问题、评论、反馈给我们,不要犹豫直接在评论区留下你的看法。谢谢观看本教程,希望你能喜欢MariaDB。


via: http://linoxide.com/linux-how-to/migrate-mysql-mariadb-linux/

作者:Arun Pyasi 译者:martin2011qi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出