---
name: "tcpcopy"
section: "1"
platform: "linux"
package: "tcpcopy"
version: "0.6.3-2"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/tcpcopy"
---

# tcpcopy(1)

online request replication tool, sending client

## NAME

TCPCopy - online request replication tool, sending client

## SYNOPSIS

- **tcpcopy *-OPTIONS* *\[OPTION\_PARAM\]***

  ## DESCRIPTION

TCPCopy is an online request replication tool using netlink and raw sockets. It can copy TCP flows from production environment to testing environment in real-time with very small impact on normal operation, so that it is a very handful tool for distributed stress testing, hot backup, online testing and benchmarking.

## OPTIONS

- **-x** **\<TRANSFER,\>**

  Use *TRANSFER* to specify the IPs and ports of the source and target servers. Only IP address is supported, this means domain names cannot be used here.

-

  Suppose  *sourceIP* and *sourcePort* are the IP and port number of the source host you want to copy from,  *targetIP* and *targetPort* are the IP and port number of the target host you want to send requests to, the format of *TRANSFER* could be as following: *\[sourceIP:\]sourcePort-targetIP:targetPort,...*

-

  The IP address and the port number are segmented by ':' (colon), the *sourcePort* and *targetIP* are segmented by '-', and two *TRANSFER* are segmented by ',' (comma).

-

  For example, *tcpcopy* *-x* *80-192.168.0.2:18080* would copy requests from TCP port 80 of localhost to port 18080 of the host at 192.168.0.2

- **-c** **\<IP\>**

  Change localhost client IP address to this *IP* address when sending to the target host. This option is usually required when copying requests initiated from localhost.

-

  For example, *tcpcopy* *-x* *8080-192.168.0.2:8080* *-c* *192.168.0.1* would copy requests from port 8080 of localhost to port 8080 of target host at 192.168.0.2, while at the same time replace the client IP with 192.168.0.1 when it is localhost.

- **-d**

  Run as a daemon.

- **-f** **\<NUM\>**

  Use this parameter to control the port number modification process and reduce port conflications when multiple TCPCopy instances are running in parallel. The value of *NUM* should be different for different TCPCopy instances. The maximum value allowed is 1023.

- **-h**

  Print help text and exit.

- **-i** **\<PCAP\_FILE\>**

  Set the pcap file name used to save to. Only valid for offline use of the program when it is configured to run at enable-offline mode.

- **-l** **\<LOG\_FILE\>**

  Save logs in *LOG\_FILE*

- **-m** **\<MEM\>**

  Set the maximum memory allowed to be used by TCPCopy process in megabytes, to avoid TCPCopy occupying too much memory and cause impact on the online system. When the memory exceeds this limit, TCPCopy would quit automatically.

-

  This parameter is effective only when the Linux kernel version is 2.6.32 or above. Default value is 512.

- **-M** **\<MTU\>**

  MTU value sent to backend (default 1500).

- **-n** **\<NUM\>**

  Use *NUM* to set the replication times when you want to get a copied data stream that is as *NUM* times large as the original.

-

  The maximum allowd value of  *NUM* is 1023. As multiple copying is done by modifying port numbers, the ports may conflict with each other, especially for intranet applications where there are few source IPs and most connections are short. Thus, TCPCopy would perform better when less copies are specified.

- **-p** **\<PORT\>**

  Set the target server listening port. Default value is 36524.

- **-P** **\<PIDFILE\>**

  Save PID in *PIDFILE* , only use in conjunction with -d option. **-r** **\<PERCENT\>** Set the percentage of sessions to transfer (integer, 1~100).

- **-v**

  Print version info and exit.

## NOTES

TCPCopy relies on packet capturing functions, which is not reliable when under heavy pressure, hence packet (request) loss rate can be much higher then. Also it is recommended to have the sending client and receiving server in the same intranet to reduce the packet (request) loss.

## SEE ALSO

**[intercept(1)](/intercept/1.md),** **/usr/share/doc/tcpcopy/README**

## AUTHOR

This manual page was written by Aron Xu \<aron@debian.org\> for the Debian GNU/Linux system (but may be used by others).
