Sync definition files, have a file suffix of .ttidef and can be edited using a plain text editor such as Notepad or vi.
The purpose of a definition file is to provide the translations to TapeTrack on how to extract the required information from the source file, including location and format of the data.
All TapeTrack command line programs, including Sync, will look for a definition file named default.ttidef in the directory they are executed in unless the name and location of the definition file is named in the program call.
Using a text file editor create a file, using a descriptive name, with a suffix .ttidef (eg customer_ACME.ttidef).
In Windows install, save this file to the TapeTrack\TapeTrack Sync\etc directory. You will also notice a sample ttidef file here that was created when Sync was installed.
The definition statements required vary on the format of the source file, what information is required for extraction and translations needed on the extracted data.
sample CSV file: CSV_source.csv
volume,barcode,family,type,location,pool 000000L6,000000L6,tape,LTO,Library,weekly_full,2021-07-21 000001L6,000001L6,tape,LTO,Offsite,weekly_full,2021-10-14 000002L6,000002L6,tape,LTO,Offsite,weekly_full,2021-07-21 000003L6,000003L6,tape,LTO,Offsite,weekly_full,2021-07-21 000004L6,000004L6,tape,LTO,Racking,weekly_full,2021-10-14 000005L6,000005L6,tape,LTO,Library,yearly_full,1970-01-01 000006L6,000006L6,tape,LTO,Racking,weekly_full,2021-07-21 000007L6,000007L6,tape,LTO,Racking,weekly_full,2021-10-14 CLN00012,CLN00012, CLN,LTO,,Cleaning_Tape,
As we are using a comma delimitered CSV file we let the Sync engine know what the delimiter is.
setCSVDelimiter(",");
Skip any line starting with volume, as it is a heading and not a Volume Skip any Volume that starts with CLN.
AddString(EXCLUSION, 0, "volume*"); AddExclusionOnValue(VOLUME, "CLN*");
Sync constants, such as Customer-ID and Media-ID, can be set using literal values as these values do not change. Set Scratch to true.
setLiteral(CUSTOMER, "ACME"); setLiteral(MEDIA, "LTO"); setLiteral(SCRATCH, "True");
Definition fields to pass date format to Sync engine, Y=YYYY (y-YY), m=mm, d=dd. Permanent date value sets the specified date to Permanent or no next move date.
SetMoveDateFormat("%%Y/%%m/%%d"); SetPermanentDateValue("1971-01-01");
Extract Volume-ID from column 1, length 10 Remove spaces from Volume-ID in case it is less than 10 digits
Extract(VOLUME, 1, 10, 0); RemoveSpaces(VOLUME);
Extract Location from column 4, length 20 Remove spaces from location in case it is less than 20 digits
Extract(REPOSITORY, 4, 20, 0); RemoveSpaces(REPOSITORY);
Extract Description from column 5, length 30 Remove Spaces from Description in case it is less then 30 characters
Extract(DESCRIPTION, 5, 30, 0); RemoveSpaces(DESCRIPTION);
Extract Movedate from column 5, length 11
Extract(MOVEDATE, 5, 11, 0);
Translate Repository data to TapeTrack Repository-ID's Offsite = OFFS Library = LIBR Racking = RACK
AddTranslation(REPOSITORY, "Offsite", "OFFS"); AddTranslation(REPOSITORY, "Library", "LIBR"); AddTranslation(REPOSITORY, "Racking", "RACK");
Translate Scratch value, set to False if Volume location is Offsite
AddTranslation2(SCRATCH, REPOSITORY, "OFFS", "False");
setCSVDelimiter(","); setLiteral(CUSTOMER, "ACME"); setLiteral(MEDIA, "LTO"); setLiteral(SCRATCH, "True"); Extract(VOLUME, 1, 10, 0); RemoveSpaces(VOLUME); Extract(REPOSITORY, 4, 20, 0); RemoveSpaces(REPOSITORY); Extract(DESCRIPTION, 5, 30, 0); RemoveSpaces(DESCRIPTION); SetMoveDateFormat("%%Y/%%m/%%d"); Extract(MOVEDATE, 5, 11, 0); AddString(EXCLUSION, 0, "volume*"); AddExclusionOnValue(VOLUME, "CLN*"); AddTranslation(REPOSITORY, "Offsite", "OFFS"); AddTranslation(REPOSITORY, "Library", "LIBR"); AddTranslation(REPOSITORY, "Racking", "RACK"); AddTranslation2(SCRATCH, REPOSITORY, "OFFS", "False");