重新分区两个磁盘而不丢失数据

我在一家软件公司实习,我碰到了一堵砖墙。 这是交易:

问题:我们在这里有一些框被错误地分区为2 x 500 GB的驱动器。 实际驱动器是2 x 1 TB驱动器。 这些本质上是只有一半可用磁盘空间的机器。 我的任务是编写一个脚本来重新分区这些驱动器。

迄今为止的解决scheme:我有一个脚本,禁用所有进程和重新启动,然后修复分区的另一个脚本。 问题是数据丢失。

我在找什么:我需要一个解决scheme,但保存所有的数据。 我的第一个虽然只是将分区扩大到适当的大小,但我不知道这是可能的。 另一种解决scheme是将所有数据复制到Disk2,分区Disk1,将数据移回到Disk1,最后分区Disk2。 问题是,我对Linux很新,我不知道该怎么做。 我有权访问fdisk实用程序和分开的实用程序。

他们都是types的ext3。

编辑:11/3/11

好的。 所以我在两个磁盘上都有大约1GB未使用的未分配空间。 我想做如下:

  • 在大小为1GB的SDB上创build一个新的扩展分区,在这里称为sdb99
  • sda5 sda6 sda7复制到新的SDB分区sdb99
    • 我可以从这些新的分区中的每个文件夹复制“/”到某个文件夹吗?
    • 我是否需要在这个新的分区上放置一个文件系统来复制那个文件?
    • 如果我只是复制“/”,将保存整个目录结构?
    • 像这样在磁盘之间移动文件是一个简单的任务吗?
  • 删除sda5 sda6 sda7 ,然后用两倍的大小重新创build它们
    • 我真的需要删除这些吗? 我不认为我可以增长3个连续的分区,即使可以,文件系统也不会增长…对吧?
  • 将数据从sdb99复制到新的sda5 sda6 sda7分区
    • 这应该像移动包含所有“/”的目录的内容一样简单,对吧?
  • sdb5 sdb6 sdb7复制到新的sda5 sda6 sda7到不同的文件夹中。
    • 应该有足够的空间,因为现在增加了一倍的空间…我希望
  • 删除并重新分区SDB
  • 将文件从sdb5 sdb6 sdb7移回到SDB

有没有人看到任何明显的问题,有任何指针,警告,build议等?

感谢大家。 再次,这需要脚本。 谢谢。

编辑2这是实际的脚本…

#!/bin/bash LOG=./repartition.log date > $LOG 2>&1 echo "Ok, let's get started." >> $LOG 2>&1 # Resize logical partitons parted -s /dev/sda resize 4 45GB 2000GB >> $LOG 2>&1 parted -s /dev/sdb resize 4 90GB 2000GB >> $LOG 2>&1 # Create the temporary file systems on disk 2 mke2fs -j /dev/sdb8 >> $LOG 2>&1 # Copy sda6 sda7 sda8 to sdb8 cp -r -L -p /dev/sda6 /dev/sdb8/home/sda6 >> $LOG 2>&1 cp -r -L -p /dev/sda7 /dev/sdb8/home/sda7 >> $LOG 2>&1 cp -r -L -p /dev/sda8 /dev/sdb8/home/sda8 >> $LOG 2>&1 # Remove NBD partitions on disk 1 parted -s /dev/sda rm 8 >> $LOG 2>&1 parted -s /dev/sda rm 7 >> $LOG 2>&1 parted -s /dev/sda rm 6 >> $LOG 2>&1 # Create NBD partitons on disk 1 parted -s /dev/sda mkpart logical 70GB 713GB >> $LOG 2>&1 parted -s /dev/sda mkpart logical 713GB 1356GB >> $LOG 2>&1 parted -s /dev/sda mkpart logical 1356GB 2000GB >> $LOG 2>&1 # Create the file systems on disk 1 mke2fs -j /dev/sda6 >> $LOG 2>&1 mke2fs -j /dev/sda7 >> $LOG 2>&1 mke2fs -j /dev/sda8 >> $LOG 2>&1 # Copy sda6 sda7 sda8 back to sda cp -r -L -p /dev/sdb8/home/sda6 /dev/sda6 >> $LOG 2>&1 cp -r -L -p /dev/sdb8/home/sda7 /dev/sda7 >> $LOG 2>&1 cp -r -L -p /dev/sdb8/home/sda8 /dev/sda8 >> $LOG 2>&1 # Copy sdb5 sdb6 sdb7 to sda6 sda7 sda8 cp -r -L -p /dev/sdb5 /dev/sda6/home/sdb5 >> $LOG 2>&1 cp -r -L -p /dev/sdb6 /dev/sda7/home/sdb6 >> $LOG 2>&1 cp -r -L -p /dev/sdb7 /dev/sda8/home/sdb7 >> $LOG 2>&1 # Remove NBD partitions on disk 2 parted -s /dev/sdb rm 8 >> $LOG 2>&1 parted -s /dev/sdb rm 7 >> $LOG 2>&1 parted -s /dev/sdb rm 6 >> $LOG 2>&1 parted -s /dev/sdb rm 5 >> $LOG 2>&1 # Create NBD partitons on disk 2 parted -s /dev/sdb mkpart logical 90GB 726GB >> $LOG 2>&1 parted -s /dev/sdb mkpart logical 726GB 1362GB >> $LOG 2>&1 parted -s /dev/sdb mkpart logical 1362GB 2000GB >> $LOG 2>&1 # Create the file systems on disk 2 mke2fs -j /dev/sdb5 >> $LOG 2>&1 mke2fs -j /dev/sdb6 >> $LOG 2>&1 mke2fs -j /dev/sdb7 >> $LOG 2>&1 # Copy sdb5 sdb6 sdb7 back to sdb cp -r -L -p /dev/sda8/home/sdb7 /dev/sdb7 >> $LOG 2>&1 cp -r -L -p /dev/sda7/home/sdb6 /dev/sdb6 >> $LOG 2>&1 cp -r -L -p /dev/sda6/home/sdb5 /dev/sdb5 >> $LOG 2>&1 rm /etc/init.d/fix_partitions >> $LOG 2>&1 rm /etc/init.d/local/99fix_partitions >> $LOG 2>&1 mv /etc/init.d/local/gca_init.off /etc/init.d/local/99gca_init >> $LOG 2>&1 echo "All set. Please reboot. Have a nice day." >> $LOG 2>&1 date >> $LOG 2>&1 reboot >> $LOG 2>&1 

为什么必须编写脚本? 我会用像启动光盘(救援是可能的)在X的Linux重新启动,运行gparted(一个graphics工具),并从那里调整分区大小。 Gparted有能力调整分区的大小,而不会造成任何损害(至less我没有遇到过NTFS的问题;根本不需要在Linux分区上做太多的工作)

你应该备份数据

如果这是重要的数据没有备份和分区玩,这只是简单的愚蠢。 或者是愚蠢的,取决于数据的重要性。

IIS使用与用于映射的帐户不同的帐户。 它可以是服务器A上的IUSR或IWAM帐户。服务器B可能将其视为GUEST。从技术和安全angular度来看,最简单和最准确的方法如下:

  1. 在SERVER B上configuration的共享上configuration审计,以监视哪个用户试图访问共享并向其中写入文件。
  2. 创build/更改位于服务器B上的共享上的用户帐户和/或权限