BackupPC::XS(3) User Contributed Perl Documentation BackupPC::XS(3) NAME BackupPC::XS - Perl extension for BackupPC libraries SYNOPSIS use BackupPC::XS; use BackupPC::XS qw( :all ); DESCRIPTION BackupPC::XS provides various submodules that implement various BackupPC library functions. The following sections describe each submodule. This documentation is very terse. BackupPC::XS is not intended to be a general-purpose module - it is closely tied to BackupPC. Look in the BackupPC code to see examples of using this module. BackupPC::XS::FileZIO Compressed file I/O using zlib: $fd = BackupPC::XS::FileZIO::open($fileName, $writeFlag, $compressLevel); $fd = BackupPC::XS::FileZIO::fdopen($stream, $writeFlag, $compressLevel); $nWrite = $fd->write($dataRef); $nRead = $fd->read($dataRef, $maxRead); $textLine = $fd->readLine(); $fd->rewind(); $fd->close(); $fd->writeTeeStderr($boolean); BackupPC::XS::PoolRefCnt Pool file reference counting: $countDB = BackupPC::XS::PoolRefCnt::new(initialEntryCnt); $refCount = $countDB->get($digest); $countDB->set($digest, $refCount); $countDB->delete($digest); $countDB->incr($digest, $refIncr); ($digest, $refCnt, $idx) = $countDB->iterate($idx); $countDB->read($fileName); $countDB->write($fileName); $countDB->print(); Pool file delta accumulation: BackupPC::XS::PoolRefCnt::DeltaFileInit($hostDir); BackupPC::XS::PoolRefCnt::DeltaFileFlush(); BackupPC::XS::PoolRefCnt::DeltaUpdate($digest, $refIncr); BackupPC::XS::PoolRefCnt::DeltaPrint(); BackupPC::XS::PoolWrite Writing and matching files in the pool: $poolWrite = BackupPC::XS::PoolWrite::new($compressLevel [, $digest]); $poolWrite->write($dataRef); ($match, $digest, $poolSize, $error) = $poolWrite->close(); $poolWrite->addToPool($fileName, $isV3PoolFile); BackupPC::XS::Attrib Manipulating a set of files and attributes (typically one directory's worth): $a = BackupPC::XS::Attrib::new($compressLevel); $attrHash = $a->get($fileName); $a->set($fileName, $attrHash); $numDirEntries = $a->count(); $a->read($dirPath, $attribFileName); $a->write($dirPath, $attribFileName); $textType = BackupPC::XS::Attrib::fileType2Text(BPC_FTYPE_....); BackupPC::XS::AttribCache Maintain a cache of directories, with full share/path semantics. $ac = BackupPC::XS::AttribCache::new($host, $backupNum, $shareNameUM, $compress); $attrHash = $ac->get($fileName, $allocateIfMissing, $dontReadInode); $ac->set($fileName, $attrHash, $dontOverwriteInode); $ac->delete($fileName); $attrHash = $ac->getInode($inode, $allocateIfMissing); $ac->setInode($inode, $attrHash); $ac->deleteInode($inode); $ac->getAll($path, $dontReadInode); $ac->flush($all, $path); $ac->getFullMangledPath($path); BackupPC::XS::DirOps $zeroMeansOk = BackupPC::XS::DirOps::path_create($path); $errorCnt = BackupPC::XS::DirOps::path_remove($path, $compress); $errorCnt = BackupPC::XS::DirOps::refCountAll($path, $compress); $lockFd = BackupPC::XS::DirOps::lockRangeFile($lockFile, $offset, $len, $block); BackupPC::XS::DirOps::unlockRangeFile($lockFd); BackupPC::XS::Lib BackupPC::XS::Lib::ConfInit($topDir, $hardLinkMax, $poolV3Enabled, $logLevel) $messageArrayRef = BackupPC::XS::Lib::logMsgGet(); $errorCnt = BackupPC::XS::Lib::logErrorCntGet; BackupPC::XS::Lib::logLevelSet($level); EXPORTS If you specify :all (see SYNOPSIS), then the BPC_FTYPE_ values are exported. SEE ALSO BackupPC, backuppc.sourceforge.net. rsync-bpc. AUTHOR Craig Barratt, COPYRIGHT AND LICENSE BackupPC code is copyright (C) 2013-2017 Craig Barratt . bpc_hashTable.c is based on code from rsync. Rsync is Copyright (C) 1996-2001 by Andrew Tridgell, 1996 by Paul Mackerras, 2001-2002 by Martin Pool, and 2003-2009 by Wayne Davison, and others. The md5 library is from the rsync codebase, and is Copyright (C) 2001-2003 Christophe Devine. See the code for the license. The zlib library is from the rsync codebase, and is Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler. See the code for the license. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, visit the http://fsf.org website. perl v5.38.0 2023-07-25 BackupPC::XS(3)