存档:: Tar模块备份文件和文件夹,但不备份文件夹中的文件

时间:2019-07-06 23:31:34

标签: perl archive

基本问题。

我想使用Perl的Archive :: Tar模块备份内容。我打算使用Archive::Tar来备份文件和文件夹以及文件夹中的文件。在我当前的代码中,前两个有效,但第三个无效。

复制步骤:

  1. 创建示例目录。
  2. 在示例目录中,创建两个目录和一个.txt文件。
  3. 使用vim,在.txt文件中写入任何内容。
  4. 在示例目录中的目录之一中,重复步骤2和3。
  5. 在示例目录中,创建一个perl脚本。
  6. 将以下代码复制到脚本中。
  7. 运行脚本。在框中,键入.txt文件的名称和两个目录。
  8. 按下大压缩按钮。
  9. 在压缩目录中打开新的.tbz文件。

代码。

use strict; use warnings;

use Archive::Tar;
use Tk;

my $mw = MainWindow -> new;
$mw -> Label ( -text => "Please type the files you wish to backup, separated by spaces." ) -> pack;

my $inputEntry = $mw -> Entry ( -width => 30 );
$inputEntry -> pack;

$mw -> Button ( -text => "Compress!", -command => sub { compress() } ) -> pack;

MainLoop;

sub compress {
    my $input = $inputEntry -> get;
    my @input;
    unless ( $input !~ m/ / ) {
        @input = split ( m/ /, $input );
    } else {
        @input = ( $input );
    }
    Archive::Tar -> create_archive ( "TEST.tbz", COMPRESS_BZIP, @input )    
}

1 个答案:

答案 0 :(得分:2)

您的重现步骤尚不清楚,更多示例可能会有所帮助,但您的脚本似乎对我来说很好用。我能够将文件夹和文件以及文件夹中的文件成功添加到存档中。对于文件夹中的每个文件,我必须键入整个相对路径,例如。 “ sample / file1.txt”。

您可能正在寻找一种自动在文件夹中添加文件的方法。这样的事情就可以解决问题:

serializer.py
from rest_framework import serializers
from django.contrib.auth.models import User

from .models import Invoice


class CreateUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = Userfields = ('id', 'username', 'password')
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        user = User.objects.create_user(validated_data['username'],
                                        None,
                                        validated_data['password'])
        return user


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = "__all__"

我认为仍然存在一些问题,例如:该脚本似乎在文件/文件夹名称中带有空格的情况下失败,即使被转义或引用也是如此。