文档库 最新最全的文档下载
当前位置:文档库 › 同步 UNIX 文件

同步 UNIX 文件

同步 UNIX 文件
同步 UNIX 文件

使用cp、tar 和rsync

有许多工具可以用来跨UNIX? 目录同步文件,但是要想有效且安全地完成这个任务,就需要多做一些工作。本文介绍跨UNIX 文件系统和不同的计算机系统安全地同步文件的解决方案,包括如何为了执行备份同步文件的加密版本。

文件同步就是在一个位置添加、修改或删除文件时,在另一个位置添加、修改或删除同一个文件的过程。本文讨论三个实用程序,cp、tar 和rsync,它们都有助于同步UNIX 文件。cp 和tar 命令的同步功能有限,而rsync 提供很全面的选项;尽管如此,它们都有各自适用的场合。

用cp 命令执行直接复制

尽管cp 命令并不是真正的同步命令,但它可能是在两个位置之间复制文件的最简单方法。对于单一文件复制,cp 显然是非常高效的:$ cp source destination。

要想复制整个目录结构,可以使用-r选项递归地把整个目录结构从一个位置复制到另一个位置:$ cp -r source destination。这种复制方法仅仅递归地复制文件和目录。文件的权限、所有者和其他元数据并不会复制到目标位置。可以使用-p选项保留复制的每个文件和目录的所有者、权限和时间:$ cp -pr source destination。

使用cp 命令是最容易最公认的文件复制方法,但是cp 的效率很低,而且如果不使用NFS 这样的远程文件系统解决方案,就不可能把目录复制到远程系统上。

使用tar

tar(tape archive 的简写)实用程序原来用于高效地把目录结构(包括文件和文件元数据)转换为二进制流,然后就可以把二进制流写到备份磁带上。

通常使用tar 创建一个包含所需目录的 .tar 文件:$ tar cf

mydir.tar ./mydir。c选项让tar 创建新的存档文件,f选项使用后面的参数指定要创建的存档文件的名称(mydir.tar)。其余参数指定应该包含在存档文件中的文件或目录。tar 命令自动地递归遍历目录结构,所以如果指定包含一个目录,tar 将在存档文件中包含这个目录以及其中的所有文件和目录。

tar 的一个重要特点是,用户指定的路径名被看作绝对路径。也就是说,如果为tar 指定完整的目录位置,例如/etc 目录:$ tar cf etc.tar /etc。那么,在默认情况下,tar 将把文件提取到它们的绝对位置。例如,如果提取这个存档

文件:$ tar xf etc.tar,就会在/etc 目录中重新创建文件和目录结构。

这可能会产生破坏(可能会覆盖/etc 中希望保留的文件)。这个问题有两种解

决方法。第一种是使用GNU tar,它支持通过--strip-path选项从提取的路

径中删除元素。

另一个简单的解决方法是进入父目录,然后使用相对路径(见清单1)。

清单 1. 进入父目录并使用相对路径

$ cd /

$ tar cf etc.tar ./etc

在提取存档文件时,会在相对位置重新创建文件。可以使用这种方法帮助同步目录。因为tar 创建目录结构的字节流,可以通过结合使用tar 和管道把文件从

一个位置复制到另一个位置:$ tar cf - ./etc |( cd /backup; tar xf - )。“-” 指定tar 应该使用标准输出(在写时)或标准输入(在读时)。圆括

号让语句在一个子shell 中执行。看一下管道符前面的代码,它创建文件的字节

流并发送到标准输出。在管道符后面,切换到另一个目录,然后从标准输入提取

字节流。

要想保留文件的所有者和权限,可以使用p选项保留每个文件和目录的元数据:$ tar cfp - ./etc |( cd /backup; tar xfp - )。

掌握这种基本结构之后,就可以执行更复杂的操作。例如,可以只复制在特定时

间之后修改过的文件:$ tar cf - --newer 20090101 ./etc |(cd /backup; tar xf - )。这个命令创建在2009 年1 月1 日之后修改过的文件的拷贝。通过与rsh 或ssh 结合使用,还可以把文件同步到远程主机:$ tar cfp

- ./etc |(ssh user@host -- tar xfp -)。按照这种方式使用ssh 和tar 是在远程主机上创建本地文件备份的好方法。但是,还有更高效的信息同步

方法。

回页首使用rsync 进行智能化同步

前面介绍的文件同步方法的主要问题是,它们会复制每个文件(和相关联的目录

结构)。如果您打算创建信息的新拷贝,这就没关系;但是,如果要同步两个目

录中的信息,这种方法的效率很低。

假设一个目录中有10,000 个文件,它们占用100GB 的空间。如果修改了一

个10MB 的文件,在使用cp 或tar 进行同步时,就必须重新复制所有100GB 文件。对于备份,复制如此大量的信息是很过分的。我们希望尽可能快速有效地

完成备份。显然,如果知道哪些文件修改过了,就可以只复制这些文件,但是不

总是能够知道这一信息。

tar 的--newer选项的作用是有限的,因为必须知道上一次修改的准确时间。

rsync 工具能够解决这个问题。它会比较目录结构和各个文件,判断源目录和目标目录之间的差异。在查明哪些文件和目录已经修改了之后,它只把这些文件和目录复制到目标位置。另外,rsync 对各个文件使用相似的算法,只复制文件中修改过的部分。

按照最简单的形式,可以使用rsync 把一个目录同步到一个新目录,例如:$ rsync -r a b。这会创建新目录b,其中包含目录a 中目录结构的拷贝。

-r选项让rsync 递归遍历目录并复制整个目录结构。但是,如果目标目录已经存在,就会在目标目录 b 中创建一个新目录a,其中包含文件的拷贝。这会有一些糟糕的副作用。例如,如果要把多个目录复制到备份目录,就会像清单 2 这样做。

清单 2. 把多个目录复制到备份目录

$ mkdir backup

$ rsync dira backup

$ rsync dirb backup

清单2创建目录backup/dira,其中包含原来dira目录的拷贝。它还创建目录backup/dirb,其中包含原来dirb目录的拷贝。后面的情况就不一样了:$ rsync dira backup/dira。在第一次使用时,这个脚本的作用符合期望。但是,在第二次使用时,rsync 会在指定的目标目录中创建目标目录,也就是创建

backup/dira/dira 目录。这不仅没有创建我们需要的结构,还造成了内容重复(其中一个版本是没有同步的)。

在使用rsync 时,可能需要指定另外几个选项。默认的同步并不复制文件元数据,而且像对待普通文件那样对待某些特殊文件(比如链接)。希望使用的主要选项包括:

?--delete——从目标目录中删除源目录中不再存在的文件。

默认模式仅仅同步文件修改并创建新文件。在默认情况下,如果在源目录中删除了一个文件,就会忽略它,并不在目标目录中相应地删除它。通过使用这个选项,可以创建完全相同的同步。

?--recursive——递归地复制目录和文件。

?--times——同步每个文件和目录的修改时间和创建时间。

?--owner——如果可能的话,保留文件的所有者。

?--group——如果可能的话,保留组所有者。

?--links——把符号链接复制为符号链接,而不是复制文件数据并解释源链接。

?--perms——保留文件权限。

?--hard-links——保留硬链接(在目标目录中创建硬链接),而不是复制文件内容。

其中一部分选项只能在两个系统的配置完全相同的情况下使用。例如,只有在源和目标计算机对相同用户使用相同ID 的情况下,才能保留文件所有者和组所有者设置。

除了本地复制之外,rsync 还可以使用ssh 执行远程复制。为此,需要在源目录或目标目录前面指定用户名和远程主机。例如,为了把一个目录同步到远程系统user 上,执行以下命令:$ rsync --recursive dira

user@remote:/backup/dirb。如果没有设置无密码ssh 连接,那么会提示您输入远程密码。如果已经设置了连接,就可以用这种方法执行无人值守的夜间备份。

还可以对源目录使用相同的用户/密码组合,从而从远程源目录复制到本地目录:$ rsync --recursive user@remote:dira dirb。在通过Internet 复制到远程系统时,还可以使用--compress选项在通过网络传输信息之前压缩信息,与原始字节复制相比,这可以大大提高效率。当然,在复制到远程系统时,如果文件包含敏感信息,可能不希望复制原始文件。在这种情况下,就需要使用加密。

回页首加密同步涉及的文件

使用文件同步解决方案的常见原因之一是,为了创建文件的精确备份,以便在出现问题时能够复制或重建目录结构的元素。

rsync 工具非常适合完成这个任务,因为它只复制两个目录之间有差异的文件,效率很高。更有意义的是,因为rsync 可以同步到远程系统,所以可以使用它自动创建远程备份,不需要把备份文件单独复制到远程系统。

这个过程的一个限制是,创建的拷贝是未加密的。如果要把文件复制到远程系统,而其他人也能够访问这个远程系统,就需要确保其他人无法读取这些文件(即使他们能够接触到这些文件)。

只使用rsync 是无法加密文件的。也无法使用rsync 的算法只加密在上一次同步操作之后修改过的文件。

但是,通过在脚本中执行rsync,就可以用rsync 的输出创建文件的辅助拷贝,然后对这个拷贝进行加密。

这个脚本的基本原理是创建原目录结构的两个拷贝。第一个拷贝作为参照拷贝,其中包含目录结构的精确副本。这样,当再次同步目录时,就可以像一般情况一样比较源和目标文件并判断出差异。在rsync 命令中使

用--itemize-changes选项,rsync 就会创建一个参照列表,其中列出在同步期间每个文件所发生的情况。输出详细说明文件是否已经修改过(或新建),或文件是否已经删除。清单 3 中给出一个示例。

清单 3. rsync 生成的修改记录

.d..t...... t1/a/

*deleting t1/a/3

.d..t...... t1/b/

>f.st...... t1/b/1

>f+++++++++ t1/b/6

以.d.开头的行表示新目录或目录修改。*deleting行表示文件已经从源目录中删除。>f行表示文件已经修改过或是新建的文件(>f++++++++)。

通过解析这个输出文件,可以判断出源目录和目标参照目录之间的差异。判断出差异之后,可以在第三个目录中创建原文件的加密版本。通过使用修改记录,只加密(或删除)在上一次同步操作之后修改过的文件。不能使用目录的加密版本直接执行同步,因为文件的加密版本总是与源文件不一样。

完整的脚本见清单4。

清单 4. 完整脚本

#!/usr/bin/perl

use warnings;

use strict;

use File::Basename;

use File::Path;

my $source = shift;

my $dest = shift;

my $encdest = shift;

if (!defined($source) || !defined($dest) || !defined($encdest))

{

print "Error: Not enough arguments!\n";

print "Usage: $0 source destination encrypteddest\n";

exit(1);

}

print STDERR "Running rsync between $source and $dest ($encdest)\n";

system("rsync --delete --recursive --times -og --links --perms " .

"--hard-links --itemize-changes $source $dest " .

">/tmp/$$.rsynclog 2>&1");

open(DATA,"/tmp/$$.rsynclog") or die "Couldn't open the rsynclog\n";

my @changedfiles;

my @delfiles;

while()

{

next if (m/sending incremental file list/);

chomp;

last if (length($_) == 0);

my ($changes,$filename) = split;

push @changedfiles,$filename if ($changes =~ m/^>f/);

push @delfiles,$filename if ($changes =~ m/^\*del/);

}

close(DATA);

my $counter = 0;

foreach my $file (@changedfiles)

{

if (-f "$dest/$file")

{

my $sourcename = encode_filename("$dest/$file");

my $destname = encode_filename("$encdest/$file");

my $dirname = dirname("$encdest/$file");

mkpath($dirname);

system(sprintf('cat "%s" |openssl enc -des3 ' .

'-pass file:/var/lib/passphrase -a >"%s"',

$sourcename,$destname));

$counter++;

}

}

my $delcounter = 0;

foreach my $file (@delfiles)

{

unlink("$encdest/$file");

$delcounter++;

}

print STDERR "Finished (changed: $counter, deleted: $delcounter)\n";

unlink("/tmp/$$.rsynclog");

sub encode_filename

{

my ($filename) = @_;

$filename =~ s/ /\\ /g;

$filename =~ s/'/\\'/g;

$filename =~ s/"/\\"/g;

$filename =~ s/\(/\\(/g;

$filename =~ s/\)/\\)/g;

$filename =~ s/&/\\&/g;

$filename =~ s/#/\\#/g;

return($filename);

}

这个脚本非常简单,很容易使用。在运行脚本时,指定源目录、参照文件的目标目录和文件加密版本的目标目录:$ rsyncrypt source destination destination.enc。

脚本的第一部分在源和目标目录之间执行基本的同步以判断修改(见清单5)。这个操作生成记录修改的文件(在/tmp 目录中)。

清单 5. 在源和目标目录之间执行基本的同步

system("rsync --delete --recursive --times -og --links --perms " .

"--hard-links --itemize-changes $source $dest " .

">/tmp/$$.rsynclog 2>&1");

接下来,解析修改的列表,生成已经修改和删除的文件的列表(见清单6)。

清单 6. 解析修改的列表

while()

{

next if (m/sending incremental file list/);

chomp;

last if (length($_) == 0);

my ($changes,$filename) = split;

push @changedfiles,$filename if ($changes =~ m/^>f/);

push @delfiles,$filename if ($changes =~ m/^\*del/);

}

对于每个修改过的文件,读取参照版本并在加密目标目录中创建加密版本(见清单7)。

清单7. 创建每个修改过的文件的加密版本

foreach my $file (@changedfiles)

if (-f "$dest/$file")

{

my $sourcename = encode_filename("$dest/$file");

my $destname = encode_filename("$encdest/$file");

my $dirname = dirname("$encdest/$file");

mkpath($dirname);

system(sprintf('cat "%s" |openssl enc -des3 ' .

'-pass file:/var/lib/passphrase -a >"%s"',

$sourcename,$destname));

$counter++;

}

}

因为要使用shell 执行实际的加密,文件名必须进行编码。需要对一些特殊字符进行转义,否则shell 会解释它们。

对于实际的加密,使用openssl 和一个简单的文本文件(在/var/lib/passphrase 中),这个文件包含信息编码所用的密码。还可以创建或使用专门生成的密钥来执行此操作或希望使用的其他加密命令。

最后,因为源目录中可能有已经删除的文件,还要把删除的文件从加密目录内容中删除(见清单8)。

清单8. 把删除的文件从加密目录内容中删除

foreach my $file (@delfiles)

{

unlink("$encdest/$file");

$delcounter++;

}

这个脚本非常有效,惟一的缺点是它需要信息的两个拷贝(参照目录和加密版本),而不只是一个。另外,为了简化这个过程,并没有把权限、所有者和时间戳信息同步到加密版本,但是很容易添加这个特性。因为这个脚本使用rsync 生成修改的列表,这会显著减少需要加密的文件数量,可以使用相同的优化算法把新的文件加密版本同步到远程主机,从而只传输在上一次同步操作之后修改过的加密文件。

结束语

本文讨论了几种不同的文件同步方法。基本的cp 命令并不是真正的同步命令,但是可以用来执行直接复制。对于真正的同步操作,cp 命令花费的时间太长,效率很低。在使用tar 时,可以指定一个时间参照点,只复制在这个时间点之

后修改过的文件。但是,如果修改不明显或无法通过简单的比较查明,这个特性的意义也不大。

rsync 工具是更好的文件同步解决方案。它对源和目标目录执行许多检查和比较,可以实现高效的同步,甚至可以通过网络或公共连接执行同步。为了确保安全,可以结合使用rsync 与加密技术,确保在没有正确的密码或加密密钥的情况下无法读取远程文件。

unix操作基本命令

UNIX系统操作入门篇(一) 这篇东西是关于Unix系统操作的教程。也是Unix的入门教程。如果你有兴趣学,请看下去,保证你可以学到许多有用的东西。如果你满足于dos,windows的操作,不想对网络服务器,有任何了解的话,可以不看。因为你并不想成为计算机高手。本教程仅仅讲授Unix系统的常用命令,不涉及Unix的历史、安装和编程。如果你想得到更多的知识,请查找其他的教材。本教程参考了《精通Unix》、《Unix基础》、《Unix系统使用指南》等书,你可以在那里找到更多的知识。 准备知识: Unix是一个多任务多用户的操作系统。多任务是指可以同时运行几个不同的程序,或命令。在操作系统的术语里叫“进程”,就象在运行Windows95的时候我们可以一边听CD 一边打字,同时打印机还在工作。多用户是指一台运行Unix系统的机器可以同时具有几个不同的输入输出设备,给几个,几十个用户同时使用。不同的输入输出设备我们称为终端。Unix 给每个终端设置不同的序号以协调工作,这个序号被称为终端序号。Unix是一个根本不同于Dos的系统,无论其命令格式,用途都和Dos有很大区别。比如:目录分割符是"/",而不是"\"。具体的不同请参考其他书籍。 开始练习之前: 在开始教授Unix命令之前,请先记下这个地址:https://www.wendangku.net/doc/912333387.html,。它是一台在美国的,连上Internet的Unix主机。之所以告诉大家这个地址是因为它提供免费的帐号供大家使用。是免费的。就是说你可以先去那里申请一个帐号,然后在那里练习你所学到的Unix 命令。因为我相信不是每个朋友都可以轻松地得到Unix帐号的。在你成功的申请好帐号之后,请在你Windows95的dos窗口里输入"telnet https://www.wendangku.net/doc/912333387.html," 等待连上主机。接下来就是输入你的用户名和密码,不要告诉我这些你都不会,如果你不会的话,你是怎么连到这个网页的?现在假定你连上了主机,系统的提示符应该是"https://www.wendangku.net/doc/912333387.html,%",对这个就是提示符就象dos里的"c:\>"。接下去我将开始命令篇。 ls 你记不记得你学会的第一个Dos命令?反正我学会的第一个命令是dir:列目录和文件的命令。你学会的第一个Unix的命令也是列目录和文件的命令ls. 功能列出当前目录下的文件和目录。同Dos一样,Unix系统命令也是带参数的。ls的参数有"a","l","F"。请注意,F是大写。Unix系统里对命令的大小是严格区分的。(所以我们做网页常常会发生连接错误)同dos 不一样的地方在于,Unix命令的参数是"-"为其前导,而不是"/"。所以完整的ls命令是 ls -l -a -F或ls -laF -l:long的意思,把文件的其他资料,如文件长度,上次修改的日期等等列出来。 -a:all的意思,把本目录下所有的文件,包括隐含的文件也列出来。 -F:显示文件类型。"*"表示可执行文件,"/"表示目录,"@"表示连接。 好,请在你的机器上输入ls -l -a -F,或许这是你一生里第一个Unix命令。记住了吗? cd 变换目录,和Dos相同。如果你在cd后面没有给定目的地,则表示目的地是家目录。在unix 中有三中表示目录的符号".","..","~"。"."表示当前目录路径的位置".."表示当前路径的上一层目录,或称"父目录" "~"表示家目录,所谓家目录指系统管理员分配给你的目录,比如你的用户名是li,那么你的家目录就是在"~li",在cd后面加上"~li"就是去你的家目录。 date 显示出当前的时间和日期,记住在Unix里你是无法修改系统时间的。输出时间一般是格林

磁盘空间管理模拟实验

目录 摘要 (2) 前言 (3) 正文 (4) 1. 实验目的 (4) 2. 设计思想 (4) 3. 实验结构图 (5) 4. 各模块的伪码算法 (5) 5. 测试分析 (10) 6. 测试结果 (11) 7. 源程序 (14) 总结 (24) 参考文献 (25) 致谢 (26)

摘要 要把文件信息存放在存储介质上,必须先找出存储介质上可供使用的空闲块。存储介质上某个文件不再需要时,又要收回它所占的存储空间作为空闲块。用户作业在执行期间经常要求建立一个新文件或撤消一个不再需要的文件,因此,文件系统必须要为它们分配存储空间或收回它所占的存储空间。如何实现存储空间的分配和收回,取决于对空闲块的管理方法,主要有两种对磁盘存储空间的分配和收回的方法:位示图法(用一张位示图(简称位图)来指示磁盘存储空间的使用情况),空闲块链接法(在UNIX操作系统中,把磁盘存储空间的空闲块成组链接)。 关键词:磁盘的分配和回收管理;位示图;成组链接。

前言 通过该题目的设计过程,掌握磁盘存储管理的原理、软件开发方法并提高解决实际问题的能力。学习使用位示图管理磁盘空间的分配与回收,了解程序运行前和回收磁盘的物理地址过程。学会用模拟UNIX系统的成组链接法实现磁盘空间的管理。了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。希望通过本次设计过程可以提高自己的分析问题的能力和实际动手的能力,将学到的知识用于实践中。

正文 1. 实验目的 磁盘格式化时,系统把磁盘存储空间分成许多磁道。每个磁道又分成若干个扇区(又叫做块)。这些空间就是用来存放用户文件的。当用户的文件不再需要时,就应该删除。把一个文件存放到磁盘上时,可以组织成连续文件,链接文件,索引文件等。因此,磁盘空间的分配方法也有两种,一种是连续空间的分配;一种是不连续空间的分配(又叫动态分配)。如何充分有效的利用磁盘空间,是操作系统应解决的重要课题之一。通过本实验,使学生对磁盘空间的分配与回收有一个较深入的理解。 2. 设计思想 位示图法: 一个简单的管理方法是用一张位示图(简称位图)来指示磁盘存储空间的使用情况。一个盘组的分块确定后,根据分配的总块数决定位图由多少个字组成,位图中的每一位与盘组分块一一对应。位示图是一张可以反映磁盘空间是否被占有的模拟图,用一个二维数组表示磁盘的空间,数组内每一个元素表示磁盘内相应的分块,数组元素为“1”表示该块已被占,“0”表示该块为空。数组元素位置与磁盘分块一一对应,即可描述出磁盘空间的利用情况。 成组链接法: 首先定义磁盘分配数组并初始化,9个一维数组分别表示9个空闲块,程序运行时,先将专用块A〔0〕复制到内存中,然后进行功能选择,分配时,查MA,从中找出空闲块号,当一组的空闲块只剩第一块时,应把该块中指出的下一组的空闲块数和块号复制到专用块这,然后把该块分配给申请者,当一组的空

unix文件系统UNIX系统下各文件的作用

unix文件系统:UNIX系统下各文件的作用疯狂代码 https://www.wendangku.net/doc/912333387.html,/ ?:http:/https://www.wendangku.net/doc/912333387.html,/UnixFreeBsd/Article26179.html /etc/auth:数据库文件 /etc/auth/subsystems:带保护子系统授权数据库 /etc/auth/system:整个系统范围内授权数据 /etc/conf:系统配置主目录 /etc/conf/bin:和unix核心有关命令 /etc/conf/cf.d:包含了用于连接unix核心所需配置文件和主要系统配置命令 /etc/conf/init.d:系统串口状态描述文件 /etc/conf/mfsys.d:unix系统上几个文件系统描述信息文件 /etc/conf/node.d:设备节点描述文件 /etc/conf/pack.d:核心目标模块 /etc/conf/pack.d/Sdsk:SCSI硬盘驱动 /etc/conf/pack.d/Srom:SCSI CD-ROM驱动 /etc/conf/pack.d/Stp:SCSI磁带接口卡驱动 /etc/conf/pack.d/ad:ADAPTEC 154X SCSI接口卡驱动 /etc/conf/pack.d/aio:异步硬盘I/O驱动 /etc/conf/pack.d/astmf:增强型VGA显示接口卡 /etc/conf/pack.d/aud:系统审计 /etc/conf/pack.d/busmouse:总线形鼠标驱动 /etc/conf/pack.d/cdb:MC146818驱动(CMOS时钟) /etc/conf/pack.d/cdt:CD-ROM/TAPE驱动 /etc/conf/pack.d/cga:IBM彩色图形接口板驱动 /etc/conf/pack.d/ciha:386/486CBUS SCSI硬盘控制卡驱动 /etc/conf/pack.d/clone:(安装X sight所需)clone模块 /etc/conf/pack.d/cn:主控台驱动  /etc/conf/pack.d/cpqs:Compaq SCSI磁带接口卡驱动 /etc/conf/pack.d/cpyrt:版权设备驱动 /etc/conf/pack.d/cr_uni: Corollary显示接口卡驱动 /etc/conf/pack.d/ct:Wangtec盒式带驱动 /etc/conf/pack.d/da:VGA、EGA、CGA设备驱动 /etc/conf/pack.d//dda:merge和vp/ix直接设备访问驱动 /etc/conf/pack.d/dk:硬盘定位(Layout)支持驱动 /etc/conf/pack.d/dma:DMA通道驱动

unix文件系统

模拟Unix文件系统寒假实践报告 学号:19212122 班级:计科121 姓名:单旭 组长:顾建东

课程设计具体进展: 以初步完成设计及代码编写,需要进行进一步的调试和完善。 具体设计: 【课设原理】 UNIX采用树型目录结构,每个目录表称为一个目录文件。 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: i节点区文件存储区 本次课程设计是要实现一个简单的模拟UNIX文件系统。我们在磁盘中申请一个二进制文件模拟UNIX内存,依次初始化建立位示图区,I节点区,数据块区。并给已打开的文件建立文件打开表。 设计思想: 先建立512个块,每个块对应512个字节,在建立一个有512个元素的字符数组,每个元素对应相应的块号,不管是文件或是目录都有I节点,建立自己设定数目元素的I节点表,并依次把位图区,I节点表,数据块区每个元素映射到一个二进制文件上。在每一次的操作中如果相应元素有变动,则对应在文件中更新输出相应数据,以便下一次启动程序的时候可以快速导入上一次的数据。 数据结构: //用户 typedef struct { char user_name[10]; // 用户名 char password[10]; // 密码 } User; //i节点 typedef struct { short inum; // 文件i节点号 char file_name[10]; // 文件名 char type; // 文件类型 char user_name[10]; // 文件所有者

操作系统模拟unix文件系统实验报告

操作系统大型实验 班级:学号:姓名: 一实验介绍…………………………………………………………………… 1.实验名称 2.实验目的 3.实验内容及要求 二实验环境…………………………………………………………………… 三实验设计…………………………………………………………………… 1.数据结构设计 2.系统流程设计 3.实现命令操作 四模块详解…………………………………………………………………… 1 .文件操作 2 .用户操作 五实验演示…………………………………………………………………… 1 .初始化磁盘块 2 .用户登录 3 .目录操作 4 .文件操作 六源代码……………………………………………………………………… 七实验心得体会…………………………………………………………………… 1.调试中遇到的问题总结 2.实验感悟

一、实验介绍 1.实验名称 操作系统大型实验 2.实验目的 完成一个 UNIX/Linux文件系统的子集的模拟实现,了解Unix文件系统的实现机制。 3.实验内容及要求 (1)文件卷结构设计 0#块可省略 I节点栈及空间为20项 块大小为512字节 卷盘块数大于100 I节点盘块数大于10块 (2)I节点结构设计 文件大小 文件联接计数 文件地址 文件拥有者 文件所属组 文件权限及类别 文件最后修改时间 其中文件地址为六项:四个直接块号,一个一次间址,一个两次间址 (3)目录结构 用16字节表示,其中14字节为文件名,2字节为I节点号 (4)用户及组结构 用户信息中包括用户名、口令,所属组,用户打开文件表 (5)文件树结构 除(4)要求外,适当考虑UNIX本身文件树结构 (6)实现功能 Ls 显示文件目录 Chmod 改变文件权限 Chown 改变文件拥有者 Chgrp 改变文件所属组 Pwd 显示当前目录 Cd 改变当前目录 Mkdir 创建子目录 Rmdir 删除子目录 Mv 改变文件名 Cp 文件拷贝 Rm 文件删除 Ln 建立文件联接 Cat 连接显示文件内容 Vi 文件写入 Mk 创建文件

UNIX命令

入门介绍和常用命令 如果文件系统磁盘空间不足,则可能出现停止服务等反常现象。 建议各现场系统环境维护人员要定期检查一下Domain所在文件系统的磁盘空间是否足够。命令: df -k df -m df -g等。 历史: BSD,SYSTEM V 主流商业版本 SUN SOLORIS IBM AIX HP-UX Tru64 UNIX LINUX 登录和用户管理 进入系统 login: passwd: 字符方式: 字符终端(console,tty) telnet,term-tools 图形方式(x-window protocal): 从主机登录; 图形终端工具(reflection,hummingbird,cygwin,etc.) Change passwd: $ passwd old password: new password: reenter new password: chsh $ chsh /bin /sh /bin /csh User informaiton defined in /etc/passwd,readonly for ordinary users.

$ man cmd $ docsearch $ wheris cmd $ which cmd Command Search Path $ echo $PATH 查看自己的用户名 $ whoami who ,w 查看当前谁在系统上 users, u 查看当前系统的用户 id 看登录用户 finger user 查看user 的信息 ps 显示当前进程状况 ps –u user 显示用户名为user 的进程状况 进程调度 后台运行 $ cmd & $ cmd1;cmd2;cmd3 $ cmd1&&cmd2&&cmd3 $ cmd1||cmd2||cmd3 从后台转到前台 $ jobs #查找 $ fg %n 定时任务 at,cron $ at time cmd $ crontab –l $ crontab –e $ crontab user # root can edit other users? crontab 重定向和管道 stdin,stdout,stderr $ cmd >file $ cmd

unix文件系统详解

UNIX文件系统的路径组织结构 UNIX并不使用驱动器名如C: D:等来标记一硬盘或分区,在整个系统上,不管有多少个硬盘,分区是怎样的,只有一个根目录,叫做root 标记为/ ,其下任何一个子目录,却可以是一个硬盘或一个分区,而且是可随时改变的,比如今天你可以设置/tmp 为硬盘上一个分区,明天你可以设置他为一个你新装的硬盘,如果你需要对这方面深入了解,你必须去看看这方面的专业书籍。现在我要让你知道的是在通常情况下,一个UNIX系统的各个标准目录下面的文件是什么,以免你哪天万幸进入了人家的系统,但连人家的主页在那里都找不到,下面以FreeBSD为例,说说UNIX文件系统的路径组织结构 FreeBSD和其他UNIX类操作系统一样有一套"标准"的路径组织结构。在标准两个字上加上引号是因为各种UNIX类操作系统的路径组织结构虽基本相同,但总存在一些小的差别。FreeBSD的这种路径组织结构为系统管理提供了很大的方便,用户可以方便的确定所需要的文件存储的位置。 / 根文件系统,用于存储系统内核,启动管理和其他文件系统的装载点。 /bin 系统启动时需要的一些通用可执行程序。 /cdrom 光盘驱动器的装载点。 /compat 与系统兼容有关的内容,如系统模拟等。 /dev 设备入口点。在UNIX系统上,每个设备都作为一个文件来看待,这里放着所有系统能够用到的各个设备 /etc 各种配置文件。非常重要的一个目录,所有的配置文件(你可以看成是windows 的注册表)包括用户密码文档等存放在这里 /mnt 软盘等其他文件系统的装载点。 /modules 内核可装载模块。 /proc 进程文件系统,存储指向当前活动进程的虚拟内存的伪文件。 /root root用户的工作目录。 /sbin 系统可执行文件。 /stand 独立执行的程序,sysinstall就在这个目录下。在安装配置系统时用到 /usr 第二个文件系统。基本上是和系统核心无关但又属于操作系统的一部分的一个目录,大多数的应用程序,还有各用户的私有资料存放在这个子系统

UNIX高级环境编程头文件apue.h配置详解

1.去该网站https://www.wendangku.net/doc/912333387.html,/下载源码 src.tar.bz 2.解压到某目录,假定为/home/user,进入解压后的文件修改Make.defines.linux中的WKDIR=/home/user/apue.2e 3.返回至apue.2e/std目录下面,修改linux.mk,将里面的nawk全部改为awk,可以使用这个命令:1,$s/nawk/awk/g 4.make后将会遇见两个问题。 a)gcc -DLINUX -ansi -I/tmp/apue.2e/include -Wall -D_GNU_SOURCE -DDEBUG -c -o printd.oprintd.c In file included from /usr/include/i386-linux-gnu/bits/time.h:86:0, from /usr/include/time.h:42, from /usr/include/pthread.h:26, from printd.c:11: /usr/include/i386-linux-gnu/bits/timex.h:31:7: 错误:expected ‘:’, ‘,’, ‘;’, ‘}’or ‘__attribute__’before ‘.’token 原因: 在apue.2e/ipp.h中定义了一个宏定义status和 /usr/include/i386-linux-gnu/bits/timex.h中的成员status冲突 解决方法: 修改这个apue.2e/ipp/ipp.h文件中的宏名称,例如改为Status 然后将apue.2e/ipp/printd.c中977行的hp->status 改为hp->Status b)ARG_MAX未定义

UNIX操作系统课程设计

操作系统课程设计 模拟UNIX文件系统的设计及实现 院系:国际教育学院 班级:计07 – 4班 姓名:符龙 指导教师:孙昌立 2011 年5 月18 日

操作系统课程设计任务书 一、题目:银行家算法 二、设计要求 (1)小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。 (2)查阅相关资料,自学具体课题中涉及到的新知识。 (3)采用结构化、模块化程序设计方法设计,功能要完善,界面美观。 (4)所设计的系统应有菜单、动画和音乐。 (5)按要求写出课程设计报告,并于设计结束后1周内提交。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件总体设计、详细设计、软件的调试、总结、谢启、附录:带中文注释的程序清单、参考文献。报告一律用A4纸打印,中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。总体设计应配合软件总体模块结构图来说明软件应具有的功能。详细设计应用传统或N-S流程图和屏幕抓图说明,调试的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。 三、课程设计工作量 由于是设计小组团结协作完成设计任务,一般每人的程序量在200行有效程序行左右,不得抄袭。 四、课程设计工作计划 2011年5月10日,指导教师讲课,学生根据题目准备资料; 2011年5月12日,设计小组进行总体方案设计和任务分工; 2011年5月13日~2009年6月23日,每人完成自己承担的程序模块并通过独立编译; 2011年5月14日~2009年6月29日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行; 2011年5月16日,验收、撰写报告; 2011年5月18日,验收或总结。 指导教师签章 教研室主任签章 操作系统课程设计指导教师评语与成绩

操作系统课程设计--基于Linux的模拟文件系统的设计与实现

简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 Linux不仅为用户提供了强大的操作系统功能,而且还提供了丰富的应用软件。用户不但可以从Internet上下载Linux及其源代码,而且还可以从Internet上下载许多Linux的应用程序。可以说,Linux本身包含的应用程序以及移植到Linux上的应用程序包罗万象,任何一位用户都能从有关Linux的网站上找到适合自己特殊需要的应用程序及其源代码,这样,用户就可以根据自己的需要下载源代码,以便修改和扩充操作系统或应用程序的功能。这对Windows NT、Windows98、MS-DOS或OS/2等商品化操作系统来说是无法做到的。 Linux具有:稳定、可靠、安全的优点,并且有强大的网络功能。其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。在相关软件的支持下,可实现WWW、FTP、DNS、DHCP、E-mail等服务,还可作为路由器使用,利用IPCHAINS/IPTABLE网络治理工具可构建NAT及功能全面的防火墙。 Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX标准的操作系统。Linux 操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同我们使用Windows NT一样,允许我们使用窗口、图标和菜单对系统进行操作。

UNIX系统管理-第九章:修复文件系统

UNIX系统管理-第九章:修复文件系统 目标 完成这一章,你将能做以下事情: 理解文件系统是如何进行更新操作的 理解sync是如何预防文件系统错误 列出文件系统错误的三个原因 使用fsck检查和修补文件系统 文件系统的维护 日常的维护 -检查文件系统的一致性 -执行文件系统备份 -监控磁盘的使用情况 系统管理员的一个主要的职责就是保护用户的数据的安全。由于UNIX中数据通过文件系统的方式存储,系统会强制性检查文件系统的存储环境是否出现问题。文件系统的完整性十分重要,系统管理员可以做许多工作来保护文件系统的完整性。 这一章,我们会学习如何使用fsck工具来检查和维护文件系统的完整性。在开始之前,我们需要了解文件系统的更新是如何发生的。 文件系统的更新 当一个文件系统装载后,它的超级块被拷贝到内存中。当拷贝完成之后,文件系统的标记被置为“dirty”。所有的对超级块的更改首先要去更改这个拷贝。当一个SYNC的系统调用使用的时候,磁盘上的拷贝才会被更新。当一个文件系统被卸载的时候,所有的在内存中的数据会被写回到磁盘上,文件系统的标记被置为“clean"。 所有的对metadata进行的修改首先是修改其在内存中的拷贝,然后才会被写到磁盘上去。一些metadata的修改是立即写到磁盘上,其它的则是在调用sync的时候才会被写到磁盘上。 举一个例子:rm myfile命令会引起以下的一些改变: 1.myfile的目录的条目被清除。 2.用来描述myfile的inode被释放 3.用来索引剩余数据块和剩余inode的映射图被更新 4.超级块中的剩余数据块的数量和inode的数量被更新 不幸的是,不是所有的metadata数据都是连续地存储在磁盘上的,所以它会进行一系列的写操作来完成这些处理过程,如果在进行这些过程中系统突然崩溃,就会使metadata数据产生不一致。例如:如果myfile的目录条目已经被清除,但是inode还没有被释放,结果就是一个inode有一个链接,但是并没有目录结构指向这个inode。这就是不一致的metadata。 内存缓冲区 用户写数据的时候,实际上并不立即发生写磁盘的动作,数据会被拷贝到一个内存的缓冲区里。这个操作非常快,数据同inode信息一起,会在以后的一些时间被写到磁盘上,通常是在缓冲区满的时候和新需要清除一下缓冲空间的时候。如果系统在还没有将缓冲区中的信息写到磁盘上去之前,系统关闭。文件系统的一致性就会被破坏。如果你察觉文件系统已经被破坏,你应该停止当前的工作。 使用缓冲区的优点和缺点: 使用缓冲区可以对磁盘进行均匀的存取,因为内核不需要知道磁盘I/O的产生的原因,内核只会将缓冲区中的数据写到磁盘,而不用去关心缓冲区数据的组成。从磁盘I/O的观点来看,使用缓冲区,系统的设计会更简单。 通过使用缓冲区,应用程序会很容易地移植到其它的UNIX系统上去,因为不同的UNIX机器的磁盘I/O也许会不同,但是程序不需要了解这些。它们只是写到缓冲区,而不用去考虑磁盘的设置方式。 使用缓冲区可以减少对磁盘的读写,这会提高整个系统的响应时间,换句话说,系统运行更快了。 重复利用缓冲区中的数据文件也能够加速系统的响应。 刷新缓冲区 sync 将缓冲区的内容写到磁盘 保持文件系统为最新 通常是通过syncer守护进程来激活

+模拟UNIX文件系统的设计及实现

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2008年秋季学期 操作系统原理课程设计 题目:模拟UNIX文件系统 专业班级:计算机一班 姓名:张树伟 学号:06240121 指导教师:刘嘉 成绩:

目录 1.摘要 (2) 2.问题描述 (2) 3.设计目的 (2) 4. 设计要求 (2) 5. 详细设计 (3) 5.1界面设计 (3) 5.1算法设计 (3) 6. 设计总结 (4) 7. 参考文献 (4) 8. 致谢 (5) 9.附录 (34)

模拟UNIX文件系统的设计及实现 1.课程设计内容 多用户的多级目录的文件系统设计。 2.概述 UNIX采用树型目录结构,每个目录表称为一个目录文件。 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: i节点区文件存储区 本次课程设计是要实现一个简单的模拟UNIX文件系统。我们在内存中开辟一个虚拟磁盘空间(1MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。文件存储空间的管理可采用位示图方法。 3.课程设计任务及要求 3.1.设计任务 多用户、多级目录结构文件系统的设计与实现。可以实现下列几条命令 login 用户登录 logout 退出当前用户 dir 列文件目录 creat 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 mkdir 创建目录 ch 改变文件目录 rd 删除目录树

模拟UNIX文件系统的设计及其实现操作系统大作业(含源文件)

华南理工大学 “计算机操作系统”课程设计大作业 (含答案) 一、题目: 模拟UNIX文件系统的设计及实现 多用户、多目录的文件系统的设计------用VC或Delphi编程模拟文件系统的管理 二、目的 通过OS文件子系统的设计、增强OS设计的技巧,达到提高解决实际OS的设计能力的提高。 三、内容 多用户的多级目录的文件系统设计。 四、功能要求 1. 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2. 多级目录:可有多级子目录; 3. 具有login (用户登录) 4. 系统初始化(分配内存空间,创建文件卷,初始化根目录) 5. 文件的创建:create 6. 文件的打开:open 7. 文件的读:read 8.文件的写:write 9. 文件关闭:close 10. 删除文件:delete 11. 创建目录(建立子目录):mkdir 12. 改变当前目录:cd 13. 列出文件目录:dir(包括文件属性) 14. 删除目录:rmdir 15. 退出:logout 五、实现方法 该大作业是实现一个类似unix的文件系统,只需要实现上述功能要求中所列出的功能,代码中不能调用OS系统提供的与文件操作和磁盘操作有关的系统调用。设计提示:用内存模拟磁盘操作,对文件和目录的创建、删除、读写都用对内存的操作来模拟。文件的属性信息用内存数据结构保存;所有文件内容和目录信息保存在内存中。文件属性包括:文件名,所有者,创建时间,最后访问时间,文件大小,数据区指针或I-node指针等。当程序运行结束时回收内存,信息不需要保存到磁盘,下次重新运行程序时重头开始。 六、实验要求 每人完成一份大作业实验报告。报告分设计思想、数据定义、处理流程、源程序、运行结果截图、

Unix操作系统

Unix操作系统 一.Unix发展历程介绍以及未来发展趋势 Unix服务器操作系统,主要支持大型的文件系统服务、数据服务等应用。但是只在服务器厂商生产的高端服务器产品中支持Unix操作系统应用,因此SUNSolaris、IBM-AIX都是定位于高端服务器操作系统市场的。 到2009年,Unix系统已经走过了整整40年的历程。在这漫长的40年里,Unix由弱小走向强大,发展推动了整个企业级IT技术和产品的历史性演进,成为所有企业核心业务首选的系统平台。然而,根据2008年IDC的统计报告中显示,WindowsServer在服务器操作系统市场上的份额已经达到34.2%,逼近了Unix 的35%,如今的Unix无时无刻不面临着来自竞争对手的挑战。 Unix一直是企业级行业应用领域最为广泛的操作系统,并且为现代操作系统的成型起到了奠定基础的作用,可以说UNIX的发展历史就像应用程序本身一样耐人寻味。 1.Unix操作系统由来 Unix系统的出现可以说对于行业的发展起到了最基础的推动作用,Unix早期是从1969年KeThompson在AT&T贝尔实验室创造的Unix操作系统,是用汇编语言写成的,以至于在随后的应用过程中,将Unix移植到PDP-11/20上的耗费了大量工作进而演化。而正是这个问题的出现,成就了C语言,可以说C语言本身是为了Unix系统的进一步完善而诞生的,通过对Unix的源代码重新改写,使Unix非常具有可移植性,同时开源化的特点推动了普及更为广泛。 2.Unix操作系统进化史 从Unix操作系统进化史的图上见证了Unix系统的出现,到进入了丰富的发展阶段,伴随着Unix系统的商业化,贝尔实验室作为Unix研究不能够在一个很系统化的环境进一步研究,对Unix的继续修改,专业的制作研究性发行版本的组织由此诞生。而SystemIII和SystemV都是当时相当重要的Unix版本。 此外,对于厂商来说,都纷纷改进Unix系统在行业的应用,以加州大学伯克利分校的BSD版4.2中派生出了多种商业Unix版本,比如Solaris、HP-UX、IRIX、AIX、SCO等等系统。 3.Unix系统的未来 未来的Unix市场还会有很大的发展空间,对于Unix系统服务器产品主要是集中在特定的行业,像国内小型机市场的主要发展动力来自电信行业。同时,随着2009年电信运营商的重组和3G无线通信业务的开展,对于小型机市场的发展是一个商机。最关键的是,高度的可靠性和安全性始终拥有市场需求,特别是在金融电信行业来说,数据服务器等高密度数据处理的系统环境,这些高端的应用领域,仍然是Unix占据主要地位。 另外,Unix的发展和系统设计、架构都是以高性能和高可靠性为中心的。Unix经历了整体架构和性能的考验,主要用于“计算”和实际业务的数据处理,所以Unix系统正是利用极少的资源去做关键的处理而闻名。 同时,对于现有的Unix系统服务器而言,对市场所关注的所谓的封闭性并不是非常介意,Unix当年是作为一个开放的系统平台出现的,应用在IBM的AIX

操作系统模拟unix文件系统实验报告

操作系统模拟u n i x文件系统实验报告

操作系统大型实验 班级:学号:姓名: 一实验介绍…………………………………………………………………… 1.实验名称 2.实验目的 3.实验内容及要求 二实验环境…………………………………………………………………… 三实验设计…………………………………………………………………… 1.数据结构设计 2.系统流程设计 3.实现命令操作 四模块详解…………………………………………………………………… 1 .文件操作 2 .用户操作 五实验演示…………………………………………………………………… 1 .初始化磁盘块 2 .用户登录 3 .目录操作 4 .文件操作 六源代码……………………………………………………………………… 七实验心得体会…………………………………………………………………… 1.调试中遇到的问题总结 2.实验感悟

一、实验介绍 1.实验名称 操作系统大型实验 2.实验目的 完成一个 UNIX/Linux文件系统的子集的模拟实现,了解Unix文件系统的实现机制。 3.实验内容及要求 (1)文件卷结构设计 0#块可省略 I节点栈及空间为20项 块大小为512字节 卷盘块数大于100 I节点盘块数大于10块 (2)I节点结构设计 文件大小 文件联接计数 文件地址 文件拥有者 文件所属组 文件权限及类别 文件最后修改时间 其中文件地址为六项:四个直接块号,一个一次间址,一个两次间址 (3)目录结构 用16字节表示,其中14字节为文件名,2字节为I节点号 (4)用户及组结构 用户信息中包括用户名、口令,所属组,用户打开文件表 (5)文件树结构 除(4)要求外,适当考虑UNIX本身文件树结构 (6)实现功能 Ls 显示文件目录 Chmod 改变文件权限 Chown 改变文件拥有者 Chgrp 改变文件所属组 Pwd 显示当前目录 Cd 改变当前目录 Mkdir 创建子目录 Rmdir 删除子目录 Mv 改变文件名 Cp 文件拷贝 Rm 文件删除 Ln 建立文件联接 Cat 连接显示文件内容 Vi 文件写入

UNIX系统管理-第八章:创建文件系统

UNIX系统管理-第八章创建文件系统 目标 学完这一章,你能够做以下事情: 以命令行方式创建文件系统。 以命令行方式装载或者卸载文件系统 通过/etc/fstab文件来自动地装载文件系统 文件系统创建概述 如果你要扩展文件系统的整体容量,你可以创建新的文件系统,并且把它加入到原来的文件层次结构中。文件系统可以创建在一个单独的磁盘上,也可以创建在一个逻辑卷中。 在创建文件系统之前,你不是必须要增加一块新的磁盘。如果你的卷组中有空闲的extent,你就可以简单地利用这些空闲空间先创建一个逻辑卷,然后在上面创建文件系统。 创建一个新的文件系统通常是由于以下的原因: 你预期当前的文件系统会很快达到其最大的容量。 你当前的文件系统已经达到最大的容量 你为一些特殊的原因,想要物理上分割文件系统。例如,不同组的用户要使用不同的磁盘空间 你想要创建一个唯一属主的文件系统或者是要创建镜像。 创建一个新的文件系统 1.创建新的文件系统 newfs -F vxfs /dev/vg01/rmyfs1 2.为这个文件系统创建装载点目录。 mkdir /myfs1 3.装载这个新文件系统 mount /dev/vg01/myfs1 /myfs1 4.将这个文件系统加入到/etc/fstab文件中 首先,你必须为这个新文件系统创建一个超级块,inode表,和其它的系统metadata数据结构。newfs命令就是创建这些数据结构的工具。上例中,在逻辑卷/dev/vg01/rmyfs1中创建了一个vxfs类型的文件系统。 一旦你使用newfs命令创建了文件系统的metadata数据结构,你必须为这个文件系统创建一个装载点,然后再装载这个文件系统。 最后,如果你想要是这个文件系统持续生效,你应该将其加入到/etc/fstab文件中去。每一次当系统启动的时候,/etc/fstab文件会被用来自动装载文件系统。所以,如果一个新的文件系统没有被加入到/etc/fstab文件中,在下一次系统启动的时候就不会被自动装载。 在创建并装载了一个新的文件系统后,你可以使用mount命令和df 命令来确认你的文件系统是否装载成功newfs命令 例子 1.newfs -F vxfs /dev/vg01/rmyfs1 2.newfs -F vxfs -o largefiles /dev/vg01/rmyfs1 3.newfs -F hfs /dev/vg01/rmyfs2 4.newfs -F hfs -o largefiles /dev/vg01/rmyfs2 5.newfs -F hfs -b 4096 -f 2048 -m 5 -i 4096 /dev/vg01/rmyfs2 在一个逻辑卷已经被留出来作为一个文件系统使用后,你必须在上面创建一个超级块,inode表,和其它的metadata 数据结构。newfs命令就是被用来创建这些数据结构的工具。 上例中的第一个例子简单地在/dev/vg01/rmyfs1这个逻辑卷中创建一个vxfs的文件系统。-F vxfs选项指明要被创建的文件系统的类型是vxfs。同时要注意,newfs命令要求用裸设备文件作为参数。而被指明的逻辑卷和磁盘上的数据会被改写。任何原先那个磁盘或者逻辑卷上的数据都会被破坏。 第二个例子与第一个类似。只是它包含一个大文件选项。HP-UX10.20版本以后支持文件系统中的最大文件的大小为128GB。但是,如果没有使用大文件选项,最大的文件的大小为2GB。 第三个例子在/dev/vg01/rmyfs2这个逻辑卷上创建一个HFS类型的文件系统。 第四个例子在/dev/vg01/rmyfs2逻辑卷上创建HFS的文件系统。但是与前一个HFS文件系统不同的是,这个例子

Unix的日志文件系统

Unix的日志文件系统 基本日志文件 不同版本的Unix日志文件的目录是不同的,最常用的目录是: /usr/adm 早期版本的 Unix /var/adm 较新版本的 Unix /var/log 用于Solaris,Linux,BSD等 /etc Unix system V早期版本 在这些目录下,或其子目录下,你可以找到以下日志文 件(也许是其中的一部分): lastlog 记录用户最后一次成功登录时间 loginlog 不良的登陆尝试记录 messages 记录输出到系统主控台以及由syslog系统服务程序产生的消息 utmp 记录当前登录的每个用户 utmpx 扩展的utmp wtmp 记录每一次用户登录和注销的历史信息wtmpx 扩展的wtmp vold.log 记录使用外部介质出现的错误 xferkig 记录Ftp的存取情况sulog 记录su命令的使用情况

acct 记录每个用户使用过的命令 aculog 拨出自动呼叫记录 下面按顺序仔细介绍一下 lastlog文件 Unix在lastlog日志文件中记录每一个用户注册进入系统 的最后时间,在你每一次进入系统时,系统会显示出这个时间: login: blackeyes password: h3ll0 Last login :Tue Jul 27 09:55:50 on tty01 lastlog告诉用户,要核对一下最后注册进入系统的时间 是否争确,若系统显示的时间与你上次进入系统的时间不符,说明发生了非授权用户注册,若这种情况发生了,用户应该马上修改帐户口令,并通知管理员。 在每次注册时,lastlog新的内容冲掉老的内容。 标准版本的Unix没有提供服务程序可以阅读lastlog文 件,有些程序可以提供这个服务,跟我们这里要谈的东西关系不太大,以后再说了。 loginlog文件 Unix system V版本中,可以把不成功的登录行为记录在/var/adm/loginlog中。要登记不成功的注册行为,可以用下列命令建立/var/adm/loginlog文件: #touch /var/adm/loginlog #chmod 600 /var/adm/loginlog

UNIX系统管理-第八章:创建文件系统

UNIX 系统管理-第八章创建文件系统 目标 学完这一章,你能够做以下事情:以命令行方式创建文件系统。 以命令行方式装载或者卸载文件系统通过/etc/fstab 文件来自动地装载文件系统文件系统创建概述 如果你要扩展文件系统的整体容量,你可以创建新的文件系统,并且把它加入到原来的文件层次结构中。文件系统可以创建在一个单独的磁盘上,也可以创建在一个逻辑卷中。 在创建文件系统之前,你不是必须要增加一块新的磁盘。如果你的卷组中有空闲的exte nt,你就可以简单地利用 这些空闲空间先创建一个逻辑卷,然后在上面创建文件系统。 创建一个新的文件系统通常是由于以下的原因:你预期当前的文件系统会很快达到其最大的容量。 你当前的文件系统已经达到最大的容量你为一些特殊的原因,想要物理上分割文件系统。例如,不同组的用户要使用不同的磁盘空间你想要创建一个唯一属主的文件系统或者是要创建镜像。 创建一个新的文件系统 1. 创建新的文件系统 newfs -F vxfs /dev/vg01/rmyfs1 2. 为这个文件系统创建装载点目录。 mkdir /myfs1 3. 装载这个新文件系统mount /dev/vg01/myfs1 /myfs1 4. 将这个文件系统加入到/etc/fstab 文件中 首先,你必须为这个新文件系统创建一个超级块, inode 表,和其它的系统metadata 数据结构。newfs 命令就是创建这些数据结构的工具。上例中,在逻辑卷/dev/vg01/rmyfs1 中创建了一个vxfs 类型的文件系统。 一旦你使用newfs 命令创建了文件系统的metadata 数据结构, 你必须为这个文件系统创建一个装载点, 然后再装载这个文件系统。 最后,如果你想要是这个文件系统持续生效,你应该将其加入到/etc/fstab 文件中去。每一次当系统启动的时候, /etc/fstab 文件会被用来自动装载文件系统。所以,如果一个新的文件系统没有被加入到/etc/fstab 文件中,在下一 次系统启动的时候就不会被自动装载。 在创建并装载了一个新的文件系统后,你可以使用mount 命令和df 命令来确认你的文件系统是否装载成功newfs 命令例子 1. newfs -F vxfs /dev/vg01/rmyfs1 2. newfs -F vxfs -o largefiles /dev/vg01/rmyfs1 3. newfs -F hfs /dev/vg01/rmyfs2 4. newfs -F hfs -o largefiles /dev/vg01/rmyfs2 5. newfs -F hfs -b 4096 -f 2048 -m 5 -i 4096 /dev/vg01/rmyfs2 在一个逻辑卷已经被留出来作为一个文件系统使用后,你必须在上面创建一个超级块,inode表,和其它的metadata 数据结构。newfs 命令就是被用来创建这些数据结构的工具。 上例中的第一个例子简单地在/dev/vg01/rmyfs1 这个逻辑卷中创建一个vxfs 的文件系统。-F vxfs 选项指明要被创建的文件系统的类型是vxfs。同时要注意,newfs命令要求用裸设备文件作为参数。而被指明的逻辑卷和磁盘上 的数据会被改写。任何原先那个磁盘或者逻辑卷上的数据都会被破坏。 第二个例子与第一个类似。只是它包含一个大文件选项。HP-UX10.20 版本以后支持文件系统中的最大文件的大 小为128GB。但是,如果没有使用大文件选项,最大的文件的大小为2GB。 第三个例子在/dev/vg01/rmyfs2 这个逻辑卷上创建一个HFS 类型的文件系统。 第四个例子在/dev/vg01/rmyfs2 逻辑卷上创建HFS 的文件系统。但是与前一个HFS 文件系统不同的是, 这个例子

相关文档
相关文档 最新文档